1033 lines
80 KiB
HTML
1033 lines
80 KiB
HTML
<html>
|
|
<head>
|
|
<title>Foiler fra Perl-kurset 2004-10-28</title>
|
|
<meta name="Generator" content="Vim/6.3">
|
|
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
|
</head>
|
|
<body bgcolor="#ffffff" text="#000000">
|
|
<h1>Foiler fra Perl-kurset 2004-10-28</h1>
|
|
<p>
|
|
Her er foilene fra perl-kurset 28. oktober 2004. HTML-en er dessverre full av ekle ting, men det
|
|
var nå sånn vim genererte den. Fy på vim!
|
|
</p>
|
|
<pre>
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$msg</font> = <font color="#ff00ff"><<'EOF'</font><font color="#ff00ff">;</font>
|
|
|
|
|
|
|
|
<font color="#ff00ff"> __ __ _ _ </font>
|
|
<font color="#ff00ff"> \ \ / /__| | | _____ _ __ ___ _ __ ___ ___ _ __ </font>
|
|
<font color="#ff00ff"> \ \ / / _ \ | |/ / _ \| '_ ` _ \| '_ ` _ \ / _ \ '_ \ </font>
|
|
<font color="#ff00ff"> \ V / __/ | < (_) | | | | | | | | | | | __/ | | |</font>
|
|
<font color="#ff00ff"> \_/ \___|_|_|\_\___/|_| |_| |_|_| |_| |_|\___|_| |_|</font>
|
|
<font color="#ff00ff"> </font>
|
|
<font color="#ff00ff"> _ _ _ ____ _ _ _ </font>
|
|
<font color="#ff00ff"> | |_(_) | | _ \ ___ _ __| | | | ___ _ _ __ ___| |</font>
|
|
<font color="#ff00ff"> | __| | | | |_) / _ \ '__| |_____| |/ / | | | '__/ __| |</font>
|
|
<font color="#ff00ff"> | |_| | | | __/ __/ | | |_____| <| |_| | | \__ \_|</font>
|
|
<font color="#ff00ff"> \__|_|_| |_| \___|_| |_| |_|\_</font><font color="#6a5acd">\\</font><font color="#ff00ff">__,_|_| |___(_)</font>
|
|
<font color="#ff00ff"> </font>
|
|
|
|
|
|
|
|
<font color="#ff00ff">EOF</font>
|
|
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$msg</font>;
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>; <font color="#a52a2a"><b>use warnings</b></font>;
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff"><<'EOF'</font><font color="#ff00ff">;</font>
|
|
<font color="#ff00ff"> HVA ER PERL?</font>
|
|
<font color="#ff00ff"> </font>
|
|
<font color="#ff00ff"> * Betyr: Practical Extraction and Reporting Language</font>
|
|
<font color="#ff00ff"> * Alternativt: Pathologically Eclectic Rubbish Lister</font>
|
|
<font color="#ff00ff"> * Et cross-platform scriptingspråk skrevet av Larry Wall (han er kul)</font>
|
|
<font color="#ff00ff"> * Virker i UNIX, Windows, på Mac, i VMS, etc etc</font>
|
|
<font color="#ff00ff"> * Kildekoden til perl er åpen (GPL)</font>
|
|
<font color="#ff00ff"> * Et tolket språk (kompileres ikke, "kompileres" hver gang det kjøres).</font>
|
|
|
|
<font color="#ff00ff"> HVORFOR PERL?</font>
|
|
|
|
<font color="#ff00ff"> * Veldig kraftig, du kan gjøre mye med lite kode</font>
|
|
<font color="#ff00ff"> * Kjapt å skrive</font>
|
|
<font color="#ff00ff"> * Svært mange ferdige biblioteker ( <A HREF="http://search.cpan.org">http://search.cpan.org</A> )</font>
|
|
<font color="#ff00ff"> * Det er kult</font>
|
|
|
|
<font color="#ff00ff"> HVORFOR IKKE PERL?</font>
|
|
<font color="#ff00ff"> </font>
|
|
<font color="#ff00ff"> * Ting kan fort bli litt grisete om man er syk i hodet eller ikke tenker</font>
|
|
<font color="#ff00ff"> * Veldig mye ulik syntaks (flere måter å gjøre det samme på)</font>
|
|
<font color="#ff00ff"> * Det blir en del krangling med Python-folk</font>
|
|
<font color="#ff00ff"> * Python-folkene kommer sikkert på mer...</font>
|
|
|
|
<font color="#ff00ff">EOF</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff"><<'EOF'</font>
|
|
|
|
<font color="#ff00ff"> HVA VI SKAL HA I DETTE KURSET</font>
|
|
|
|
<font color="#ff00ff"> Det finnes to typer perl:</font>
|
|
<font color="#ff00ff"> * Oneliner-perl (kjappe triks man bare skal bruke en gang (eller ha på</font>
|
|
<font color="#ff00ff"> t-skjorta))</font>
|
|
<font color="#ff00ff"> * Produksjonskode-perl (relativt pen, leselig kode)</font>
|
|
|
|
<font color="#ff00ff"> Ikke alle ser denne forskjellen. De som ikke ser denne forskjellen er</font>
|
|
<font color="#ff00ff"> grunnen til at perl har rykte på seg for å være uleselig og grisete,</font>
|
|
<font color="#ff00ff"> såkalt "write once".</font>
|
|
|
|
<font color="#ff00ff"> Jeg er ikke så glad i dem som ikke ser forskjellen. Spesielt ikke når jeg</font>
|
|
<font color="#ff00ff"> må fikse på koden deres.</font>
|
|
|
|
<font color="#ff00ff"> I dette kurset skal vi lære om produksjonskode-perl. Oneliner-perl lærer</font>
|
|
<font color="#ff00ff"> dere tidsnok selv ;-)</font>
|
|
|
|
<font color="#ff00ff">EOF</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff"><<"EOF"</font>
|
|
<font color="#ff00ff"># Enkel syntaks:</font>
|
|
|
|
<font color="#ff00ff"> * Minner veldig om C, PHP og Java. </font>
|
|
<font color="#ff00ff"> * { og } deler inn blokker, </font>
|
|
<font color="#ff00ff"> * ( og ) rundt argumenter, etc (MEN: valgfrie). </font>
|
|
<font color="#ff00ff"> * Alle statements avsluttes med semikolon</font>
|
|
<font color="#ff00ff"> </font>
|
|
<font color="#ff00ff">EOF</font>
|
|
|
|
<font color="#0000ff"># Parenteser rundt er valgfrie. Begge disse virker:</font>
|
|
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">hei</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>print</b></font>(<font color="#ff00ff">"</font><font color="#ff00ff">hei</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>);
|
|
|
|
<font color="#0000ff"># Parenteser brukes for å angi skop. Dette er spesielt nyttig når man har </font>
|
|
<font color="#0000ff"># flere kommandoer nøstet inni hverandre. Lurer du på om det funker uten </font>
|
|
<font color="#0000ff"># parentes? Da beholder du parentesene. Lesbar kode er viktig.</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Variabler og slikt</font>
|
|
<font color="#0000ff"># Variabler, arrays og hasher deklareres med ordet "my". Det holder med ett </font>
|
|
<font color="#0000ff"># ord for å deklarere, siden Perl ikke bryr seg så mye om innholdet i </font>
|
|
<font color="#0000ff"># variabler. Om det er et heltall, et desimaltall eller tekst tas litt på</font>
|
|
<font color="#0000ff"># gefühlen.</font>
|
|
|
|
<font color="#0000ff"># En vanlig variabel (såkalt "skalar):</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$tall</font> = <font color="#ff00ff">15</font>;
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$tekst</font> = <font color="#ff00ff">'</font><font color="#ff00ff">hei</font><font color="#ff00ff">'</font>;
|
|
|
|
<font color="#0000ff"># En array:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@array</font>;
|
|
<font color="#008b8b">@array</font> = (<font color="#ff00ff">15</font>, <font color="#ff00ff">'</font><font color="#ff00ff">hei</font><font color="#ff00ff">'</font>); <font color="#0000ff"># Definer alle verdier</font>
|
|
<font color="#008b8b">$array</font>[<font color="#ff00ff">2</font>] = <font color="#ff00ff">'</font><font color="#ff00ff">gunnar</font><font color="#ff00ff">'</font>; <font color="#0000ff"># Sett tredje element</font>
|
|
|
|
<font color="#0000ff"># En hash:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">%hash</font> = (<font color="#ff00ff">'</font><font color="#ff00ff">ottar</font><font color="#ff00ff">'</font> => <font color="#ff00ff">15</font>, <font color="#ff00ff">'</font><font color="#ff00ff">pelle</font><font color="#ff00ff">'</font> => <font color="#ff00ff">17</font>); <font color="#0000ff"># Definer alle verdier</font>
|
|
<font color="#008b8b">$hash</font>{<font color="#ff00ff">'</font><font color="#ff00ff">bjarne</font><font color="#ff00ff">'</font>} = <font color="#ff00ff">13</font>; <font color="#0000ff"># Sett verdi for bjarne</font>
|
|
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>; <font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Quoting</font>
|
|
<font color="#0000ff"># Ulike hermetegn oppfører seg forskjellig, på samme måte som i PHP </font>
|
|
<font color="#0000ff"># (PHP rappet det av Perl). </font>
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$test</font> = <font color="#ff00ff">'</font><font color="#ff00ff">ottar</font><font color="#ff00ff">'</font>;
|
|
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">hei </font><font color="#008b8b">$test</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>; <font color="#0000ff"># printer dette: hei ottar</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">'</font><font color="#ff00ff">hei $test\n</font><font color="#ff00ff">'</font>; <font color="#0000ff"># printer dette: hei $test\n</font>
|
|
|
|
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>; <font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Hvordan slå sammen tekst (også likt som i PHP, av samme grunn)</font>
|
|
|
|
<font color="#0000ff"># Flere tekststrenger slås sammen med punktum (Java bruker pluss).</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$fornavn</font> = <font color="#ff00ff">"</font><font color="#ff00ff">Kjell Magne</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$etternavn</font> = <font color="#ff00ff">"</font><font color="#ff00ff">Bondevik</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$fulltnavn</font> = <font color="#008b8b">$fornavn</font> . <font color="#ff00ff">'</font><font color="#ff00ff"> </font><font color="#ff00ff">'</font> . <font color="#008b8b">$etternavn</font>;
|
|
|
|
<font color="#0000ff"># Vi kunne selvsagt også brukt dette, som også er mye vanligere å bruke:</font>
|
|
<font color="#008b8b">$fulltnavn</font> = <font color="#ff00ff">"</font><font color="#008b8b">$fornavn</font><font color="#ff00ff"> </font><font color="#008b8b">$etternavn</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Men av og til er "" upraktisk, som f.eks. om du skal printe ut HTML, </font>
|
|
<font color="#0000ff"># eller har verdiene i noe annet enn variabler.</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">%verdier</font> = (<font color="#ff00ff">'</font><font color="#ff00ff">uid</font><font color="#ff00ff">'</font> => <font color="#ff00ff">1015</font>, <font color="#ff00ff">'</font><font color="#ff00ff">bnavn</font><font color="#ff00ff">'</font> => <font color="#ff00ff">'</font><font color="#ff00ff">kjellmangle</font><font color="#ff00ff">'</font>);
|
|
|
|
<font color="#0000ff"># Dette:</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">'</font><font color="#ff00ff"><a href="</font><font color="#ff00ff">'</font> . <font color="#008b8b">$verdier</font>{<font color="#ff00ff">'</font><font color="#ff00ff">uid</font><font color="#ff00ff">'</font>} . <font color="#ff00ff">'</font><font color="#ff00ff">"></font><font color="#ff00ff">'</font> . <font color="#008b8b">$verdier</font>{<font color="#ff00ff">'</font><font color="#ff00ff">bnavn</font><font color="#ff00ff">'</font>} . <font color="#ff00ff">"</font><font color="#ff00ff"></a></font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Er penere enn dette:</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff"><a href=</font><font color="#6a5acd">\"</font><font color="#008b8b">$verdier</font><font color="#ff00ff">{'uid'}</font><font color="#6a5acd">\"</font><font color="#ff00ff">></font><font color="#008b8b">$verdier</font><font color="#ff00ff">{'bnavn'}</a></font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Men begge virker, selv om highlightingen min ikke tror det.</font>
|
|
<font color="#0000ff"># At noe virker men blir highlightet feil er ofte et hint. Ta hintet.</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>; <font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Ting på flere linjer: bruk enten punktum eller <<"EOF";.</font>
|
|
|
|
<font color="#0000ff"># Punktum (Som regel best):</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$test</font> = <font color="#ff00ff">"</font><font color="#ff00ff">ottar</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$langvariabel</font> = <font color="#ff00ff">"</font><font color="#ff00ff">Denne teksten på flere linjer er dedikert til</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>
|
|
. <font color="#ff00ff">"</font><font color="#ff00ff">min gode venn og følgesvenn </font><font color="#008b8b">$test</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># <<"EOF"; (Bruk bare når det er _store_ greier, og punktum blir veldig</font>
|
|
<font color="#0000ff"># tungvint. Ikke spesielt viktig å kunne, men greit å vite om):</font>
|
|
|
|
<font color="#008b8b">$langvariabel</font> = <font color="#ff00ff"><<"EOF"</font><font color="#ff00ff">;</font>
|
|
<font color="#ff00ff">Denne teksten på flere linjer er dedikert til</font>
|
|
<font color="#ff00ff">min gode venn og følgesvenn </font><font color="#008b8b">$test</font>
|
|
<font color="#ff00ff">EOF</font>
|
|
|
|
<font color="#008b8b">$langvariabel</font> = <font color="#ff00ff"><<'EOG'</font><font color="#ff00ff">;</font>
|
|
<font color="#ff00ff">Denne teksten på flere linjer er dedikert til</font>
|
|
<font color="#ff00ff">min gode venn og følgesvenn $test</font>
|
|
<font color="#ff00ff">EOG</font>
|
|
|
|
<font color="#0000ff"># Det inni hermetegnene er et merke. Alt helt ned til merket blir med i </font>
|
|
<font color="#0000ff"># variabelen. Hva som skjer med teksten inni avhenger av hermetegnene rundt </font>
|
|
<font color="#0000ff"># merket. Husk å bruke samme merke bare en gang! Pass på semikolonet!</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Logikk med tallverdier</font>
|
|
<font color="#0000ff"># Logikk i perl ligner veldig på andre språk som C, PHP og Java.</font>
|
|
<font color="#0000ff"># 0, tom streng og udefinert er false, det meste annet er true (som i PHP).</font>
|
|
<font color="#0000ff"># IKKE utnytt dette for mye. Det blir vanskelig å lese. Test bare rett på </font>
|
|
<font color="#0000ff"># variabelen om du bruker variabelen som en boolean.</font>
|
|
|
|
<font color="#0000ff"># Booleans (1 = sant, 0 = usant):</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$boolean</font> = <font color="#ff00ff">1</font>;
|
|
<font color="#a52a2a"><b>if</b></font> (<font color="#008b8b">$boolean</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#6a5acd">\$</font><font color="#ff00ff">boolean er sann!</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>; <font color="#0000ff"># Dette skjer.</font>
|
|
} <font color="#a52a2a"><b>else</b></font> {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#6a5acd">\$</font><font color="#ff00ff">boolean er usann!</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>; <font color="#0000ff"># Dette skjer ikke.</font>
|
|
}
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$tall</font> = <font color="#ff00ff">15</font>;
|
|
<font color="#a52a2a"><b>if</b></font> (<font color="#008b8b">$tall</font> > <font color="#ff00ff">10</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#6a5acd">\$</font><font color="#ff00ff">tall er over 10!</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
<font color="#a52a2a"><b>elsif</b></font> (<font color="#008b8b">$tall</font> < <font color="#ff00ff">5</font>) { <font color="#0000ff"># elsif står for "else if"</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#6a5acd">\$</font><font color="#ff00ff">tall under over 5!</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Logikk med tekstverdier</font>
|
|
|
|
<font color="#0000ff"># Dere som kan PHP er vant til å bruke "==" på tekststrenger. Det virker </font>
|
|
<font color="#0000ff"># IKKE i Perl! I Perl er det egne greier for å sammenligne ord.</font>
|
|
|
|
<font color="#0000ff"># De viktigste:</font>
|
|
<font color="#0000ff"># eq: er lik</font>
|
|
<font color="#0000ff"># ne: er ikke lik</font>
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$tekst</font> = <font color="#ff00ff">"</font><font color="#ff00ff">banan</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>if</b></font> (<font color="#008b8b">$tekst</font> <font color="#a52a2a"><b>eq</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">banan</font><font color="#ff00ff">"</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#6a5acd">\$</font><font color="#ff00ff">tekst er lik banan</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#a52a2a"><b>if</b></font> (<font color="#008b8b">$tekst</font> <font color="#a52a2a"><b>ne</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">eple</font><font color="#ff00ff">"</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#6a5acd">\$</font><font color="#ff00ff">tekst er ikke lik eple</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#a52a2a"><b>if</b></font> (<font color="#a52a2a"><b>length</b></font>(<font color="#008b8b">$tekst</font>) > <font color="#ff00ff">3</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#6a5acd">\$</font><font color="#ff00ff">tekst er mer enn tre tegn lang</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## While-loop</font>
|
|
<font color="#0000ff"># En while-loop i perl virker akkurat som i andre språk. Yay!</font>
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$counter</font> = <font color="#ff00ff">0</font>;
|
|
<font color="#a52a2a"><b>while</b></font> (<font color="#008b8b">$counter</font> < <font color="#ff00ff">10</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">tallet er </font><font color="#008b8b">$counter</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
<font color="#008b8b">$counter</font>++; <font color="#0000ff"># Øker $counter med 1</font>
|
|
}
|
|
|
|
<font color="#0000ff">## For-loop</font>
|
|
<font color="#0000ff"># Virker også som i andre språk! Hurra!</font>
|
|
|
|
<font color="#a52a2a"><b>for</b></font> (<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$tall</font> = <font color="#ff00ff">0</font>; <font color="#008b8b">$tall</font> < <font color="#ff00ff">10</font>; <font color="#008b8b">$tall</font>++) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">tallet er </font><font color="#008b8b">$tall</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Foreach-loopen</font>
|
|
<font color="#0000ff"># Denne er litt spesiell. Man har noe lignende i PHP, men syntaksen er ulik.</font>
|
|
<font color="#0000ff"># Foreach går gjennom hvert element i en liste.</font>
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@array</font> = (<font color="#ff00ff">'</font><font color="#ff00ff">gunnar</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">ottar</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">per ulf</font><font color="#ff00ff">'</font>);
|
|
|
|
<font color="#0000ff"># Legg merke til at løpevariabelen $verdi angis utenfor parentesen!</font>
|
|
<font color="#a52a2a"><b>foreach</b></font> <font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$verdi</font> (<font color="#008b8b">@array</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$verdi</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># Man kan også bruke foreach til å løpe over alle nøklene i en hash:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">%hash</font> = ( <font color="#ff00ff">'</font><font color="#ff00ff">uid</font><font color="#ff00ff">'</font> => <font color="#ff00ff">3425</font>, <font color="#ff00ff">'</font><font color="#ff00ff">bnavn</font><font color="#ff00ff">'</font> => <font color="#ff00ff">'</font><font color="#ff00ff">ottar</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">rnavn</font><font color="#ff00ff">'</font> => <font color="#ff00ff">'</font><font color="#ff00ff">Ottar Evje</font><font color="#ff00ff">'</font> );
|
|
|
|
<font color="#0000ff"># Kommandoen "keys" gir ut en array med alle nøklene i hashen, så dette er </font>
|
|
<font color="#0000ff"># egentlig akkurat det samme.</font>
|
|
<font color="#a52a2a"><b>foreach</b></font> <font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$key</font> (<font color="#a52a2a"><b>keys</b></font> <font color="#008b8b">%hash</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$key</font> . <font color="#ff00ff">"</font><font color="#ff00ff"> = </font><font color="#ff00ff">"</font> . <font color="#008b8b">$hash</font>{<font color="#008b8b">$key</font>} . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># Foreach er dritnyttig!</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>; <font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Å bryte ut av looper i Perl</font>
|
|
<font color="#0000ff"># Når man skal bryte ut av looper er Perl litt rart. Alt heter noe annet enn</font>
|
|
<font color="#0000ff"># det gjør i andre språk! Dette er jo skikkelig teit, men man venner seg</font>
|
|
<font color="#0000ff"># til det ganske fort. Jeg tipper grunnen er at perl ble laget for å parse</font>
|
|
<font color="#0000ff"># tekst, og da virket disse navnene mer logiske.</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># En liten tabell: </font>
|
|
<font color="#0000ff"># +------+-------------+---------------------------------------------+</font>
|
|
<font color="#0000ff"># | Perl | Andre språk | Betydning |</font>
|
|
<font color="#0000ff"># +------+-------------+---------------------------------------------+</font>
|
|
<font color="#0000ff"># | next | continue | Hopp over det som er nedenfor og kjør neste |</font>
|
|
<font color="#0000ff"># | | | runde i loopen |</font>
|
|
<font color="#0000ff"># +------+-------------+---------------------------------------------+</font>
|
|
<font color="#0000ff"># | last | break | Avbryt kjøringen av hele loopen |</font>
|
|
<font color="#0000ff"># +------+-------------+---------------------------------------------+</font>
|
|
|
|
<font color="#0000ff"># Eksempel på next:</font>
|
|
<font color="#a52a2a"><b>foreach</b></font> <font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$tall</font> (<font color="#ff00ff">1</font>, <font color="#ff00ff">2</font>, <font color="#ff00ff">3</font>) {
|
|
<font color="#a52a2a"><b>if</b></font> (<font color="#008b8b">$tall</font> == <font color="#ff00ff">2</font>) {
|
|
<font color="#a52a2a"><b>next</b></font>;
|
|
}
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">tallet er </font><font color="#008b8b">$tall</font><font color="#ff00ff">!</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Eksempel på "last": Rakettutskyting med forviklinger</font>
|
|
|
|
<font color="#a52a2a"><b>for</b></font> (<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$tall</font> = <font color="#ff00ff">10</font>; <font color="#008b8b">$tall</font> > <font color="#ff00ff">0</font>; <font color="#008b8b">$tall</font>--) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$tall</font><font color="#ff00ff">...</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Oh no! Når vi kommer til 5 eksploderer raketten!</font>
|
|
<font color="#a52a2a"><b>if</b></font> (<font color="#008b8b">$tall</font> == <font color="#ff00ff">5</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">Boom!</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>last</b></font>; <font color="#0000ff"># Her avbryter loopen</font>
|
|
}
|
|
}
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">### Hva er egentlig det greiene på toppen av alle foilene?</font>
|
|
|
|
<font color="#0000ff">## Shebangen</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># #!/usr/bin/perl er en såkalt shebang. Den forteller hva slags språk</font>
|
|
<font color="#0000ff"># scriptet er skrevet i, og hva slags program som skal brukes til å tolke </font>
|
|
<font color="#0000ff"># det.</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Om ikke shebangen var det ville vi måttet vite hva scriptet var skrevet i,</font>
|
|
<font color="#0000ff"># og selv kjørt programmet med filen som argument.</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Uten shebang:</font>
|
|
<font color="#0000ff"># perl program.pl</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Med shebang:</font>
|
|
<font color="#0000ff"># ./program.pl</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># For at programmet skal kunne kjøres direkte må det også være kjørbart.</font>
|
|
<font color="#0000ff"># "chmod +x program.pl" fikser den biffen.</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## use strict:</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Uten use strict trenger man ikke å deklarere variabler. Variabler blir </font>
|
|
<font color="#0000ff"># bare opprettet når de trengs av seg selv. Kjekt? Nei.</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Alle variabler som er implisitt deklarert blir nemlig globale. </font>
|
|
<font color="#0000ff"># Globale variabler er ikke bra.</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Dessuten blir det plutselig mulig å bruke samme variabel til flere ting </font>
|
|
<font color="#0000ff"># uten å merke det. Det er heller ikke bra.</font>
|
|
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Eksempel uten strict. Merk at det ikke er noen "use strict" øverst.</font>
|
|
<font color="#0000ff"># Vi tenker oss en webtjeneste der brukeren kan logge inn. Brukeren er </font>
|
|
<font color="#0000ff"># innlogget som "rob-geir".</font>
|
|
<font color="#008b8b">$user</font> = <font color="#ff00ff">"</font><font color="#ff00ff">rob-geir</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">Du er logget inn som: </font><font color="#008b8b">$user</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># maaaange linjer kode med magi og ting. Vi har helt glemt $user.</font>
|
|
|
|
<font color="#0000ff"># Hoi, systemet har en funksjon som lister opp alle som er innlogget.</font>
|
|
<font color="#0000ff"># Akkurat nå er det disse tre:</font>
|
|
<font color="#008b8b">@users</font> = (<font color="#ff00ff">'</font><font color="#ff00ff">ottar</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">rob-geir</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">dan-børge</font><font color="#ff00ff">'</font> );
|
|
|
|
<font color="#0000ff"># Vi lister opp alle brukerene. Men hold an! Her brukte vi jo $user på nytt!</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">Brukere innlogget: </font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>for</b></font> (<font color="#008b8b">$i</font> = <font color="#ff00ff">0</font>; <font color="#008b8b">$i</font> < <font color="#a52a2a"><b>scalar</b></font> <font color="#008b8b">@users</font>; <font color="#008b8b">$i</font>++){
|
|
<font color="#008b8b">$user</font> = <font color="#008b8b">$users</font>[<font color="#008b8b">$i</font>];
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$user</font><font color="#ff00ff"> </font><font color="#ff00ff">"</font>;
|
|
}
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Maaange linjer med kode. Nå har vi glemt brukerlisten.</font>
|
|
|
|
<font color="#0000ff"># Nederst på siden vil vi vise hvem som er logget inn en gang til.</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">Du er logget inn som: </font><font color="#008b8b">$user</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Warnings betyr akkurat det som står: Advarsler. Det gjør at perl advarer </font>
|
|
<font color="#0000ff"># når noe ser rart ut. Du vil ha det. Om koden din gir advarsler er det fordi</font>
|
|
<font color="#0000ff"># du har gjort noe du ikke burde gjøre.</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Jeg fjernet use strict denne gangen, så det skulle bli lettere å gjøre</font>
|
|
<font color="#0000ff"># noe dumt warnings kunne oppdage.</font>
|
|
|
|
<font color="#0000ff"># Eksempel på hvorfor warnings er bra:</font>
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$foo</font> = <font color="#ff00ff">"</font><font color="#ff00ff">bar</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">hei, jeg er </font><font color="#008b8b">$bar</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>; <font color="#0000ff"># Å nei! Feil variabelnavn!</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Kompliserte datastrukturer i Perl</font>
|
|
<font color="#0000ff"># Perl versjon 4 (som ingen bruker lenger) hadde ingen støtte for å nøste</font>
|
|
<font color="#0000ff"># arrays og lignende. Todimensjonale arrays var ikke mulig. Folk brukte all</font>
|
|
<font color="#0000ff"># verdens grisete triks for å få til noe tilsvarende. Æsj!</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Perl versjon 5 har egentlig heller ikke støtte for flerdimensjonale arrays</font>
|
|
<font color="#0000ff"># eller sånne ting, men det merker vi ikke stort til. Nå har vi nemlig pekere!</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Pekere i perl kan minne om pointere i C eller objektreferanser i Java.</font>
|
|
|
|
<font color="#0000ff"># Vi har arrayen @array</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@array</font> = (<font color="#ff00ff">'</font><font color="#ff00ff">ottar</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">spiser</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">fisk</font><font color="#ff00ff">'</font>);
|
|
|
|
<font color="#0000ff"># Vi lager en referanse</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$ref</font> = [ <font color="#008b8b">@array</font> ]; <font color="#0000ff"># Firkantparenteser til array, akkurat som ved henting</font>
|
|
<font color="#0000ff"># av verdier</font>
|
|
|
|
<font color="#0000ff"># Vi får tilbake arrayen med @{}:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@sammearray</font> = @{<font color="#008b8b">$ref</font>}; <font color="#0000ff"># denne sier: $ref er egentlig en array, altså!</font>
|
|
|
|
<font color="#0000ff"># Det samme gjelder for hasher, men med { %hash } og %{$ref}</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Vi kan også gjøre ting litt mer direkte, uten å lage @array først:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$arrayref</font> = [ <font color="#ff00ff">'</font><font color="#ff00ff">geir</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">liker</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">sko</font><font color="#ff00ff">'</font> ];
|
|
|
|
<font color="#0000ff"># Og så kan vi hente ut verdier direkte på to måter. De er omtrent like bra,</font>
|
|
<font color="#0000ff"># så det er bare å velge den du liker best. Personlig derefererer jeg gjerne </font>
|
|
<font color="#0000ff"># referansen og bruker arrayen/hashen direkte etterpå, som på forrige foil.</font>
|
|
<font color="#a52a2a"><b>print</b></font> @{<font color="#008b8b">$arrayref</font>}[<font color="#ff00ff">0</font>] . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>; <font color="#0000ff"># Bruker @{} som før</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$arrayref</font>->[<font color="#ff00ff">0</font>] . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>; <font color="#0000ff"># Derefererer peker med ->, som i C.</font>
|
|
|
|
<font color="#0000ff"># Det samme virker for hasher:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$hashref</font> = { <font color="#ff00ff">'</font><font color="#ff00ff">name</font><font color="#ff00ff">'</font> => <font color="#ff00ff">'</font><font color="#ff00ff">ottar</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">liker</font><font color="#ff00ff">'</font> => <font color="#ff00ff">'</font><font color="#ff00ff">sko</font><font color="#ff00ff">'</font> };
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">%hash</font> = %{<font color="#008b8b">$hashref</font>};
|
|
|
|
<font color="#a52a2a"><b>print</b></font> %{<font color="#008b8b">$hashref</font>}->{<font color="#ff00ff">'</font><font color="#ff00ff">name</font><font color="#ff00ff">'</font>} . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>; <font color="#0000ff"># Perl liker ikke }{, så vi må ha pil.</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$hashref</font>->{<font color="#ff00ff">'</font><font color="#ff00ff">name</font><font color="#ff00ff">'</font>} . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$hash</font>{<font color="#ff00ff">'</font><font color="#ff00ff">name</font><font color="#ff00ff">'</font>} . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Legg merke til at den første bare er stygg, og de to siste ligner ganske</font>
|
|
<font color="#0000ff"># mye på hverandre. Ukritisk bruk av referanser kan være en potensiell</font>
|
|
<font color="#0000ff"># feilkilde, siden det er lett å blingse. Bare lag en vanlig hash eller</font>
|
|
<font color="#0000ff"># array, så unngår du problemet.</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Så, til poenget: Hvordan lage todimensjonale ting?</font>
|
|
<font color="#0000ff"># Todimensjonale arrays i Perl 5 er en array med arrayreferanser i.</font>
|
|
<font color="#0000ff"># Hva merker vi til dette? Ingen ting. Perl fikser det for oss automatisk.</font>
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@array</font>;
|
|
<font color="#008b8b">$array</font>[<font color="#ff00ff">0</font>] = [ <font color="#ff00ff">'</font><font color="#ff00ff">rob-geir</font><font color="#ff00ff">'</font> ]; <font color="#0000ff"># Vi legger en array-referanse fremst i arrayen.</font>
|
|
|
|
<font color="#0000ff"># Om vi printer ut $array[0] nå, får vi bare en referanse, omtrent som når vi</font>
|
|
<font color="#0000ff"># printer et rart objekt i Java. Den ser slik ut: "ARRAY(0x814cd28)"</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$array</font>[<font color="#ff00ff">0</font>] . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Dette er altså egentlig en referanse. Men vent nå litt, da kan vi jo bruke</font>
|
|
<font color="#0000ff"># pil-notasjonen fra forrige foil!</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$array</font>[<font color="#ff00ff">0</font>]->[<font color="#ff00ff">0</font>] . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Men denne pilen er jo kjedelig å skrive. Det fikser Perl! Det virker nemlig</font>
|
|
<font color="#0000ff"># uten også!</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$array</font>[<font color="#ff00ff">0</font>][<font color="#ff00ff">0</font>] . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Og vips, vi merker ingen ting til dette rare referanse-greiene!</font>
|
|
<font color="#0000ff"># Men, det er jo kjekt å vite om dem. Vi kan nemlig bruke dem andre steder</font>
|
|
<font color="#0000ff"># også.</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Men av og til må vi likevel vite om dette rare med pekerene. Si vi lager en</font>
|
|
<font color="#0000ff"># todimensjonal array med navn i:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@array</font> = (
|
|
[ <font color="#ff00ff">'</font><font color="#ff00ff">gunnar</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">ottar</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">bengt-åke</font><font color="#ff00ff">'</font> ],
|
|
[ <font color="#ff00ff">'</font><font color="#ff00ff">kåre</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">ole-rånni</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">per</font><font color="#ff00ff">'</font> ],
|
|
[ <font color="#ff00ff">'</font><font color="#ff00ff">kåbbai-laila</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">per-kristian foss</font><font color="#ff00ff">'</font> ]
|
|
);
|
|
|
|
<font color="#0000ff"># Og så vil vi gå gjennom alle verdiene:</font>
|
|
<font color="#a52a2a"><b>foreach</b></font> <font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$ref</font> (<font color="#008b8b">@array</font>) {
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@navn</font> = @{<font color="#008b8b">$ref</font>}; <font color="#0000ff"># Foreach gir oss referansen, så vi lager en array</font>
|
|
<font color="#a52a2a"><b>foreach</b></font> <font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$navn</font> (<font color="#008b8b">@navn</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$navn</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>; <font color="#0000ff"># Printer et linjeskift etter hver gruppe</font>
|
|
}
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Å lese inn ting med perl</font>
|
|
<font color="#0000ff"># Noe av det man gjør oftest i perl er å lese inn data. Dette gjør man med </font>
|
|
<font color="#0000ff"># "<>". Omtrent sånn:</font>
|
|
|
|
<font color="#0000ff">## Lese fra standard in</font>
|
|
<font color="#0000ff"># En og en linje:</font>
|
|
<font color="#a52a2a"><b>while</b></font> (<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$linje</font> = <font color="#008b8b"><STDIN></font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$linje</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># Alt inn i en stor array (krever mer minne, unngå om du kan):</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@array</font> = <font color="#008b8b"><STDIN></font>;
|
|
<font color="#a52a2a"><b>foreach</b></font> <font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$linje</font> (<font color="#008b8b">@array</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$linje</font>;
|
|
}
|
|
|
|
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Å lese fra en fil:</font>
|
|
<font color="#0000ff"># Åpne filen, eller dø om det ikke virket.</font>
|
|
<font color="#a52a2a"><b>open</b></font>(<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$FILDESKRIPTOR</font>, <font color="#ff00ff">"</font><font color="#ff00ff">test.txt</font><font color="#ff00ff">"</font>) <font color="#a52a2a"><b>or</b></font> <font color="#a52a2a"><b>die</b></font>(<font color="#ff00ff">"</font><font color="#ff00ff">Kunne ikke åpne test.txt: </font><font color="#008b8b">$!</font><font color="#ff00ff">"</font>);
|
|
|
|
<font color="#0000ff"># Les, og print ut med "> " foran:</font>
|
|
<font color="#a52a2a"><b>while</b></font>(<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$linje</font> = <<font color="#008b8b">$FILDESKRIPTOR</font>>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">> </font><font color="#008b8b">$linje</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># Lukk.</font>
|
|
<font color="#a52a2a"><b>close</b></font>(<font color="#008b8b">$FILDESKRIPTOR</font>);
|
|
|
|
<font color="#0000ff"># Hett tips: open kan også brukes for å åpne ting for skriving.</font>
|
|
<font color="#0000ff"># Kjør kommandoen "perldoc -f open" for å få masse info om alt du</font>
|
|
<font color="#0000ff"># kan gjøre med open.</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Fjerne linjeskift fra det du leser</font>
|
|
<font color="#0000ff"># Til forskjell fra f.eks. sed og grep, fjerner ikke perl linjeskift av seg</font>
|
|
<font color="#0000ff"># selv. Om du ikke vil ha dem, må du fjerne dem.</font>
|
|
<font color="#0000ff"># Til dette har vi kommandoen chomp.</font>
|
|
|
|
<font color="#a52a2a"><b>while</b></font> (<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$linje</font> = <font color="#008b8b"><STDIN></font>) {
|
|
<font color="#a52a2a"><b>chomp</b></font>(<font color="#008b8b">$linje</font>);
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$linje</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>; <font color="#0000ff"># ok, litt unyttig å bare sette på igjen linjeskiftet.</font>
|
|
}
|
|
|
|
<font color="#0000ff"># chomp kan også kjøres rett på en hel array. Da fikser den alle verdiene.</font>
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@array</font> = <font color="#008b8b"><STDIN></font>;
|
|
<font color="#a52a2a"><b>chomp</b></font>(<font color="#008b8b">@array</font>);
|
|
|
|
<font color="#0000ff"># NB! Det er veldig vanlig å glemme chomp, og så fortsette i god tro.</font>
|
|
<font color="#0000ff"># Det kan føre til ekle bugs der linjeskift dukker opp på rare steder.</font>
|
|
<font color="#0000ff"># Jeg vet dette fordi jeg gjør det hele tiden selv ;-)</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Printing i Perl</font>
|
|
<font color="#0000ff"># Hittil har vi bare sett på basic bruk av print. Men print kan brukes til </font>
|
|
<font color="#0000ff"># mer. For eksempel en fildeskriptor:</font>
|
|
|
|
<font color="#0000ff"># Dette burde gi morosakene ut på standard error.</font>
|
|
<font color="#0000ff"># PS: Det er IKKE komma etter fildeskriptoren når du printer!</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">STDERR</font> <font color="#ff00ff">"</font><font color="#ff00ff">Aaaah! Venstre motor brenner!</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
|
|
<font color="#0000ff"># Om du åpner noe med skrivetilgang med open kan og også bruke print der.</font>
|
|
<font color="#0000ff"># Dette overskriver test.txt:</font>
|
|
<font color="#a52a2a"><b>open</b></font>(<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$DESKR</font>, <font color="#ff00ff">"</font><font color="#ff00ff">>test.txt</font><font color="#ff00ff">"</font>) <font color="#a52a2a"><b>or</b></font> <font color="#a52a2a"><b>die</b></font> (<font color="#ff00ff">"</font><font color="#ff00ff">feil ved åpning av test.txt: </font><font color="#008b8b">$!</font><font color="#ff00ff">"</font>);
|
|
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$DESKR</font> <font color="#ff00ff">"</font><font color="#ff00ff">Hei, har du det bra?</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#a52a2a"><b>close</b></font>(<font color="#008b8b">$DESKR</font>);
|
|
|
|
|
|
<font color="#0000ff"># Print på en array printer alle verdiene:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@linjer</font> = (<font color="#ff00ff">"</font><font color="#ff00ff">hei</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>, <font color="#ff00ff">"</font><font color="#ff00ff">ost</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>, <font color="#ff00ff">"</font><font color="#ff00ff">banan</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>);
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">@linjer</font>;
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>; <font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Printf: Fancy-schmancy printing</font>
|
|
<font color="#0000ff"># Der sitter du med et digert desimaltall, og vil printe det ut med to</font>
|
|
<font color="#0000ff"># desimaler. Printf to the rescue!</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$tall</font> = <font color="#ff00ff">3.1415</font>;
|
|
<font color="#a52a2a"><b>printf</b></font>(<font color="#ff00ff">"</font><font color="#ff00ff">pi: %.2f</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>, <font color="#008b8b">$tall</font>);
|
|
|
|
<font color="#0000ff"># Eller du har en masse tallverdier med ulik lengde, og vil høyurejustere:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@tall</font> = (<font color="#ff00ff">3</font>, <font color="#ff00ff">1337</font>, <font color="#ff00ff">25</font>, <font color="#ff00ff">254</font>);
|
|
<font color="#a52a2a"><b>foreach</b></font> <font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$tall</font> (<font color="#008b8b">@tall</font>) {
|
|
<font color="#a52a2a"><b>printf</b></font>(<font color="#ff00ff">"</font><font color="#ff00ff">tall: %4d</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>, <font color="#008b8b">$tall</font>); <font color="#0000ff"># juksa litt: hardkodet inn maksbredde fire</font>
|
|
}
|
|
|
|
<font color="#0000ff"># Eller du vil printe ut et tall i hex, oktal og desimal, null-paddet til </font>
|
|
<font color="#0000ff"># åtte sifre:</font>
|
|
<font color="#a52a2a"><b>printf</b></font>(<font color="#ff00ff">"</font><font color="#ff00ff">hex: %08x %08o %08d</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>, <font color="#ff00ff">255</font>, <font color="#ff00ff">255</font>, <font color="#ff00ff">255</font>);
|
|
|
|
<font color="#0000ff"># Du kan også lagre resultatet i en annen variabel med sprintf:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$leet</font> = <font color="#a52a2a"><b>sprintf</b></font>(<font color="#ff00ff">"</font><font color="#ff00ff">%03.2f</font><font color="#ff00ff">"</font>, <font color="#ff00ff">13.37890</font>);
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#008b8b">$leet</font>, <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
<font color="#0000ff"># Dette er litt for omfattende til at vi kan herje veldig mye med det.</font>
|
|
<font color="#0000ff"># "perldoc -f sprintf" har mer info.</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Pass på! Det er lurere å bruke print om du ikke trenger ekstra formatering!</font>
|
|
<font color="#0000ff"># Printf er tregere, og det er lettere å gjøre feil.</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>; <font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Splitting av tekststrenger</font>
|
|
<font color="#0000ff"># Ofte har man en lang greie man vil splitte inn i en array. No problem!</font>
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$string</font> = <font color="#ff00ff">"</font><font color="#ff00ff">www.pvv.ntnu.no</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@deler</font> = <font color="#a52a2a"><b>split</b></font>(<font color="#ff00ff">"</font><font color="#ff00ff">.</font><font color="#ff00ff">"</font>, <font color="#008b8b">$string</font>);
|
|
<font color="#0000ff"># nå inneholder @deler dette: ('www', 'pvv', 'ntnu', 'no');</font>
|
|
|
|
<font color="#0000ff"># Man kan også splitte på flere tegn:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$verdier</font> = <font color="#ff00ff">"</font><font color="#ff00ff">en, to, tre, fire, fem</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@verdier</font> = <font color="#a52a2a"><b>split</b></font>(<font color="#ff00ff">"</font><font color="#ff00ff">, </font><font color="#ff00ff">"</font>, <font color="#008b8b">$verdier</font>);
|
|
|
|
<font color="#0000ff"># I stedet for å skrive en string som tegnet man kan splitte på, kan man også</font>
|
|
<font color="#0000ff"># skrive et regulært uttrykk. Vi tar kanskje noe om regulære uttrykk senere,</font>
|
|
<font color="#0000ff"># hvis vi rekker det.</font>
|
|
|
|
<font color="#0000ff"># Å splitte på " " (mellomrom) er litt spesielt. Da oppfører perl seg som awk,</font>
|
|
<font color="#0000ff"># og gir deg alle ordene, uansett hvor mye whitespace det er mellom. </font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$setn</font> = <font color="#ff00ff">"</font><font color="#ff00ff">hei, jeg er ikke så flink med mellomrom</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@setn</font> = <font color="#a52a2a"><b>split</b></font>(<font color="#ff00ff">"</font><font color="#ff00ff"> </font><font color="#ff00ff">"</font>, <font color="#008b8b">$setn</font>);
|
|
|
|
<font color="#0000ff"># Om du vil at det skal bli som i cut, med blanke felter mellom spaces som er </font>
|
|
<font color="#0000ff"># inntil hverandre, bruk regulæruttrykket / /:</font>
|
|
<font color="#008b8b">@setn</font> = <font color="#a52a2a"><b>split</b></font>(<font color="#a52a2a"><b>/</b></font><font color="#ff00ff"> </font><font color="#a52a2a"><b>/</b></font>, <font color="#008b8b">$setn</font>);
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Join, det motsatte av split</font>
|
|
<font color="#0000ff"># Hvis du har en array, og skal lage en tekststreng av verdiene, er join</font>
|
|
<font color="#0000ff"># tingen for deg. Den setter sammen alle feltene, med en tekststreng mellom.</font>
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@koner</font> = (<font color="#ff00ff">"</font><font color="#ff00ff">magda</font><font color="#ff00ff">"</font>, <font color="#ff00ff">"</font><font color="#ff00ff">gunhild</font><font color="#ff00ff">"</font>, <font color="#ff00ff">"</font><font color="#ff00ff">gunda</font><font color="#ff00ff">"</font>);
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$penliste</font> = <font color="#a52a2a"><b>join</b></font>(<font color="#ff00ff">"</font><font color="#ff00ff">, </font><font color="#ff00ff">"</font>, <font color="#008b8b">@koner</font>);
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">Koner: </font><font color="#008b8b">$penliste</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Ut kommer dette: "Koner: magda, gunhild, gunda"</font>
|
|
|
|
|
|
<font color="#0000ff"># Gammelt jegertriks for å lage en diger variabel av en array du har lest inn:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@linjer</font> = <font color="#008b8b"><STDIN></font>;
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$digervariabel</font> = <font color="#a52a2a"><b>join</b></font>(<font color="#ff00ff">""</font>, <font color="#008b8b">@linjer</font>); <font color="#0000ff"># Vi joiner på tom streng</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Magiske variabler i Perl</font>
|
|
<font color="#0000ff"># De magiske variablene i Perl er beryktet, og flittig kritisert av </font>
|
|
<font color="#0000ff"># Python-brukere. Og ja, de er litt ekle. Ikke bruk dem mer enn du må,</font>
|
|
<font color="#0000ff"># og husk å kommentere kode der du eventuelt bruker dem.</font>
|
|
|
|
<font color="#0000ff"># Disse tre dukker opp relativt ofte, og man forventes vel egentlig å kunne</font>
|
|
<font color="#0000ff"># dem, så de trenger man ikke forklare i koden. Men husk å forklare eventuelle</font>
|
|
<font color="#0000ff"># andre utskeielser!</font>
|
|
|
|
<font color="#008b8b">$_</font> <font color="#0000ff"># Default-variabelen. Om ikke noe er angitt, brukes som regel</font>
|
|
<font color="#0000ff"># denne. Kan stort sett unngås, men av og til lurer den seg inn.</font>
|
|
|
|
<font color="#008b8b">@_</font> <font color="#0000ff"># Default-arrayen. Dukker stort sett bare opp som argumentene til</font>
|
|
<font color="#0000ff"># subrutiner (mer om dem senere, om vi rekker det)</font>
|
|
|
|
<font color="#008b8b">$!</font> <font color="#0000ff"># Feilmelding. Denne variabelen inneholder siste feilmelding.</font>
|
|
<font color="#0000ff"># Den ble brukt etter open for et par foiler siden.</font>
|
|
|
|
<font color="#0000ff"># Det er hauger av andre magiske variabler også, men disse tre får holde </font>
|
|
<font color="#0000ff"># inntil videre. Er du nysgjerrig på mer, kjør kommandoen "perldoc perlvar".</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Subrutiner (også kjent som funksjoner eller metoder)</font>
|
|
<font color="#0000ff"># Subrutiner er veldig kjekke for å strukturere scripts. De har litt</font>
|
|
<font color="#0000ff"># annerledes syntaks enn det vi er vant til, men ikke så veldig.</font>
|
|
|
|
<font color="#0000ff"># Vi lager en subrutine</font>
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">hei</font><font color="#008b8b"> </font><font color="#008b8b">()</font><font color="#008b8b"> </font>{
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">hei!</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># ...og vi kjører den.</font>
|
|
hei();
|
|
|
|
<font color="#0000ff"># ...og en gang til:</font>
|
|
hei();
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Men vi vil kanskje gjerne gi subrutinen noen argumenter. For å fortelle </font>
|
|
<font color="#0000ff"># subrutinen at den skal ta inn to variabler, gir vi den to $-tegn i </font>
|
|
<font color="#0000ff"># parentesen:</font>
|
|
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">hei</font><font color="#008b8b">($$)</font><font color="#008b8b"> </font>{
|
|
<font color="#a52a2a"><b>my</b></font> (<font color="#008b8b">$navn</font>, <font color="#008b8b">$adjektiv</font>) = <font color="#008b8b">@_</font>; <font color="#0000ff"># Oi, hva er dette?</font>
|
|
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">Hei </font><font color="#008b8b">$navn</font><font color="#ff00ff">, du er </font><font color="#008b8b">$adjektiv</font><font color="#ff00ff">!</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># Og så hilser vi på noen</font>
|
|
hei(<font color="#ff00ff">"</font><font color="#ff00ff">ottar</font><font color="#ff00ff">"</font>, <font color="#ff00ff">"</font><font color="#ff00ff">kul</font><font color="#ff00ff">"</font>);
|
|
hei(<font color="#ff00ff">"</font><font color="#ff00ff">pål</font><font color="#ff00ff">"</font>, <font color="#ff00ff">"</font><font color="#ff00ff">illeluktende</font><font color="#ff00ff">"</font>);
|
|
|
|
<font color="#0000ff"># Nå dukket det opp litt nytt, spesielt den rare greia som heter @_. </font>
|
|
<font color="#0000ff"># @_ er en magisk array der alle argumentene ligger. Jeg vet at det er to </font>
|
|
<font color="#0000ff"># argumenter (det står jo "$$" i parentesen), så jeg kan bare hente dem ut </font>
|
|
<font color="#0000ff"># direkte med to variabler inni en parentes.</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Denne parentesen er kanskje litt rar, men det er egentlig bare </font>
|
|
<font color="#0000ff"># array-snarveien baklengs. Husk at vi kan si </font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@array</font> = (<font color="#ff00ff">'</font><font color="#ff00ff">per</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">pål</font><font color="#ff00ff">'</font>);
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Vi vil jo ofte returnere noe fra subrutinene våre. Det er lett. Bare bruk </font>
|
|
<font color="#0000ff"># return $variabel:</font>
|
|
|
|
<font color="#0000ff"># Vi lager subrutinen fjortis, som setter masse utropstegn bakerst på</font>
|
|
<font color="#0000ff"># tekst:</font>
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">fjortis</font><font color="#008b8b"> </font><font color="#008b8b">($)</font><font color="#008b8b"> </font>{
|
|
<font color="#a52a2a"><b>my</b></font> ( <font color="#008b8b">$tekst</font> ) = <font color="#008b8b">@_</font>;
|
|
<font color="#a52a2a"><b>return</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$tekst</font><font color="#ff00ff">!!!11</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># Hent ut fjortis-tegnsatt variabel</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$fjortis</font> = fjortis(<font color="#ff00ff">"</font><font color="#ff00ff">hei</font><font color="#ff00ff">"</font>);
|
|
|
|
<font color="#0000ff"># Print den.</font>
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$fjortis</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># Print en dobbeltfjortis variabel</font>
|
|
<font color="#a52a2a"><b>print</b></font> fjortis(fjortis(<font color="#ff00ff">"</font><font color="#ff00ff">hallo</font><font color="#ff00ff">"</font>)) . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Å sende inn og ut arrays fra subrutiner er lett:</font>
|
|
|
|
<font color="#0000ff"># En skikkelig unødvendig og teit subrutine som sorterer mot alfabetet:</font>
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">descsort</font><font color="#008b8b"> </font><font color="#008b8b">(@)</font><font color="#008b8b"> </font>{
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@array</font> = <font color="#008b8b">@_</font>;
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@output</font> = <font color="#a52a2a"><b>reverse</b></font> <font color="#a52a2a"><b>sort</b></font> <font color="#008b8b">@array</font>;
|
|
<font color="#a52a2a"><b>return</b></font> <font color="#008b8b">@output</font>;
|
|
}
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@array</font> = (<font color="#ff00ff">'</font><font color="#ff00ff">hei</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">hå</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">aha</font><font color="#ff00ff">'</font>);
|
|
<font color="#a52a2a"><b>foreach</b></font> <font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$ord</font> (descsort(<font color="#008b8b">@array</font>)) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$ord</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Å leke med en hash er også temmelig likt:</font>
|
|
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">print_hash</font><font color="#008b8b"> </font><font color="#008b8b">(%)</font><font color="#008b8b"> </font>{
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">%hash</font> = <font color="#008b8b">@_</font>; <font color="#0000ff"># Hold an! Hva er dette? Hash = Array? Hæ?</font>
|
|
|
|
<font color="#a52a2a"><b>foreach</b></font> <font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$key</font> (<font color="#a52a2a"><b>keys</b></font> <font color="#008b8b">%hash</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$key</font><font color="#ff00ff"> = </font><font color="#ff00ff">"</font> . <font color="#008b8b">$hash</font>{<font color="#008b8b">$key</font>} . <font color="#ff00ff">"</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
}
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">%hash</font> = ( <font color="#ff00ff">'</font><font color="#ff00ff">fnavn</font><font color="#ff00ff">'</font> => <font color="#ff00ff">'</font><font color="#ff00ff">herodes</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">enavn</font><font color="#ff00ff">'</font> => <font color="#ff00ff">'</font><font color="#ff00ff">falsk</font><font color="#ff00ff">'</font> );
|
|
print_hash(<font color="#008b8b">%hash</font>);
|
|
|
|
<font color="#0000ff"># Dette med "%hash = @_" virker jo litt sært. Men legg merke til at vi bruker</font>
|
|
<font color="#0000ff"># de samme parentesene for å lage arrays og hasher. Faktisk er det bare piler</font>
|
|
<font color="#0000ff"># stedet for kommaer på annenhver for at det skal bli lettere å se hva som er</font>
|
|
<font color="#0000ff"># hva.</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Når du legger masse verdier inn i en hash gir du den altså bare en array</font>
|
|
<font color="#0000ff"># med verdier, og så blir annenhver verdi nøkkel og innhold.</font>
|
|
<font color="#0000ff"># (dette virker på samme måten i PHP).</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Men hva om vi for eksempel vil gi inn to variabler og en array?</font>
|
|
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">felleseie</font><font color="#008b8b"> </font><font color="#008b8b">($$@)</font><font color="#008b8b"> </font>{
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$han</font> = <font color="#a52a2a"><b>shift</b></font>; <font color="#0000ff"># Hva er denne shift?</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$hun</font> = <font color="#a52a2a"><b>shift</b></font>;
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@eiendeler</font> = <font color="#008b8b">@_</font>;
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$han</font><font color="#ff00ff"> og </font><font color="#008b8b">$hun</font><font color="#ff00ff"> eier sammen dette:</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
<font color="#a52a2a"><b>foreach</b></font> <font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$ting</font> (<font color="#008b8b">@eiendeler</font>) {
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#6a5acd">\t</font><font color="#008b8b">$ting</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
}
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@eiendeler</font> = (<font color="#ff00ff">'</font><font color="#ff00ff">sofa</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">tv</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">stereo</font><font color="#ff00ff">'</font>);
|
|
felleseie(<font color="#ff00ff">"</font><font color="#ff00ff">per</font><font color="#ff00ff">"</font>, <font color="#ff00ff">"</font><font color="#ff00ff">kari</font><font color="#ff00ff">"</font>, <font color="#008b8b">@eiendeler</font>);
|
|
|
|
<font color="#0000ff"># shift(@array) tar første verdi i @array, fjerner den fra arrayen og</font>
|
|
<font color="#0000ff"># returnerer den. ('en', 'to', 'tre') blir altså ('to', 'tre') etter shift.</font>
|
|
<font color="#0000ff"># Slik kan vi fjerne de to første variablene, og sitte igjen med resten, som</font>
|
|
<font color="#0000ff"># er til arrayen.</font>
|
|
<font color="#0000ff"># </font>
|
|
<font color="#0000ff"># Grunnen til at det må gjøres slik er at @_ bare inneholder alle verdiene, </font>
|
|
<font color="#0000ff"># den har ikke system på hva som er hva.</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Men hva med to arrays? @_ vet jo ikke når den ene slutter og den andre </font>
|
|
<font color="#0000ff"># begynner! Da må vi til med referanser igjen!</font>
|
|
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">tell_penisforlengere</font><font color="#008b8b"> </font><font color="#008b8b">(\@\@)</font><font color="#008b8b"> </font>{
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@biler</font> = @{ <font color="#008b8b">$_</font>[<font color="#ff00ff">0</font>] };
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@baater</font> = @{ <font color="#008b8b">$_</font>[<font color="#ff00ff">1</font>] };
|
|
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">Det er </font><font color="#ff00ff">"</font>.<font color="#a52a2a"><b>scalar</b></font> <font color="#008b8b">@biler</font>.<font color="#ff00ff">"</font><font color="#ff00ff"> bilær og </font><font color="#ff00ff">"</font>.<font color="#a52a2a"><b>scalar</b></font> <font color="#008b8b">@baater</font>.<font color="#ff00ff">"</font><font color="#ff00ff">båtær</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@biler</font> = (<font color="#ff00ff">'</font><font color="#ff00ff">mercedes</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">porsche</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">austin martin</font><font color="#ff00ff">'</font>);
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">@baater</font> = (<font color="#ff00ff">'</font><font color="#ff00ff">sjekte</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">campingcruiser</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">yacht</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">pråm</font><font color="#ff00ff">'</font>);
|
|
|
|
tell_penisforlengere(<font color="#008b8b">\@biler</font>, <font color="#008b8b">\@baater</font>);
|
|
|
|
<font color="#0000ff"># Hva er disse backslashene? Bare en annen måte å lage referanser på.</font>
|
|
<font color="#0000ff"># I C ville de tilsvart '&var'. Hvilken du bruker er hipp som happ. </font>
|
|
<font color="#0000ff"># Disse gjør det samme:</font>
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$biler</font>;
|
|
<font color="#008b8b">$biler</font> = [ <font color="#008b8b">@biler</font> ];
|
|
<font color="#008b8b">$biler</font> = <font color="#008b8b">\@biler</font>;
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Hittil har vi hatt funksjonen øverst i scriptet. Men da må vi jo scrolle</font>
|
|
<font color="#0000ff"># forbi masse drit for å se hva selve programmet gjør (man *skal* gi </font>
|
|
<font color="#0000ff"># subrutinene så logiske navn at man skjønner hva de gjør ut fra navnet.</font>
|
|
|
|
<font color="#0000ff"># Dette fikser vi med en prototype. De er omtrent som i C:</font>
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">hei</font><font color="#008b8b"> </font><font color="#008b8b">($$)</font>;
|
|
|
|
<font color="#0000ff"># Og så bruker vi den</font>
|
|
hei(<font color="#ff00ff">'</font><font color="#ff00ff">rob-geir</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">tøff</font><font color="#ff00ff">'</font>);
|
|
hei(<font color="#ff00ff">'</font><font color="#ff00ff">gunnar</font><font color="#ff00ff">'</font>, <font color="#ff00ff">'</font><font color="#ff00ff">sexy</font><font color="#ff00ff">'</font>);
|
|
|
|
<font color="#0000ff"># Og her kommer den.</font>
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">hei</font><font color="#008b8b"> </font><font color="#008b8b">($$)</font><font color="#008b8b"> </font>{
|
|
<font color="#a52a2a"><b>my</b></font> (<font color="#008b8b">$navn</font>, <font color="#008b8b">$adjektiv</font>) = <font color="#008b8b">@_</font>;
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#ff00ff">Hei </font><font color="#008b8b">$navn</font><font color="#ff00ff">, du er </font><font color="#008b8b">$adjektiv</font><font color="#ff00ff">!</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
}
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff"># Om du skriver rekursive funksjoner må du uansett prototype. </font>
|
|
<font color="#0000ff"># La oss se på denne greia som teller nedover (på en skikkelig teit måte):</font>
|
|
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">tellned</font><font color="#008b8b"> </font><font color="#008b8b">($)</font>;
|
|
|
|
<font color="#a52a2a"><b>sub</b></font><font color="#008b8b"> </font><font color="#008b8b">tellned</font><font color="#008b8b"> </font><font color="#008b8b">($)</font><font color="#008b8b"> </font>{
|
|
<font color="#a52a2a"><b>my</b></font> <font color="#008b8b">$tall</font> = <font color="#a52a2a"><b>shift</b></font>;
|
|
|
|
<font color="#a52a2a"><b>print</b></font> <font color="#ff00ff">"</font><font color="#008b8b">$tall</font><font color="#ff00ff">...</font><font color="#6a5acd">\n</font><font color="#ff00ff">"</font>;
|
|
|
|
<font color="#a52a2a"><b>if</b></font> (<font color="#008b8b">$tall</font> > <font color="#ff00ff">0</font>) {
|
|
tellned(<font color="#008b8b">$tall</font><font color="#ff00ff">-1</font>);
|
|
}
|
|
}
|
|
|
|
tellned(<font color="#ff00ff">10</font>);
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
<font color="#a020f0">#!/usr/bin/perl</font>
|
|
<font color="#a52a2a"><b>use strict</b></font>;
|
|
<font color="#a52a2a"><b>use warnings</b></font>;
|
|
|
|
<font color="#0000ff">## Noen siste ord om subrutiner</font>
|
|
<font color="#0000ff"># </font>
|
|
<font color="#0000ff"># I en del gammel eller dårlig kode vil du kanskje oppdage at alle </font>
|
|
<font color="#0000ff"># subrutinekall er med '&' foran, og at ingenting er prototypet.</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Dette var slik subrutiner virket før. De sjekket ikke antall argumenter </font>
|
|
<font color="#0000ff"># eller noe som helst, og man sa fra om at de var subrutiner med &.</font>
|
|
<font color="#0000ff"># Det er fremdeles mulig å gjøre det slik av hensyn til bakoverkompatibilitet,</font>
|
|
<font color="#0000ff"># men IKKE GJØR DET!</font>
|
|
<font color="#0000ff">#</font>
|
|
<font color="#0000ff"># Om man gjør dette forsvinner nemlig alle former for feilsjekking rett i</font>
|
|
<font color="#0000ff"># rett i dass, siden &subrutine() slår av sjekking av antall argumenter og</font>
|
|
<font color="#0000ff"># slikt. Dette er et kjempetriks for å skjule bugs. Just don't do it, okay?</font>
|
|
|
|
<font color="#0000ff"># ----------------------------------------------------------------------------------</font>
|
|
|
|
</pre>
|
|
</body>
|
|
</html>
|