Mis on tõene? Tsüklid, failihaldus Merle Sibola iga string on tõene, välja arvatud "" ja "0" iga number on tõene, v.a. number 0 Iga viide (reference) on tõene Iga defineerimata muutuja on väär. if if (EXPR) { if (EXPR) { else { if (EXPR) { elsif (EXPR) { if (EXPR) { elsif (EXPR) { else { Tingimus sulgudes if - näited if ($arv > $suur) { #leitakse suurim arv $suur=$arv; #if if ($sone eq valmis ) { print Lõpetame.\n ; else { print Jätkame.\n ; unless unless (EXPR) { unless (EXPR) { else { unless (EXPR) { elsif (EXPR) { unless (EXPR) { elsif (EXPR) { else { unless ($a==1) { if ($a!= 1) { if (!($a == 1)) { unless - näited unless (chdir.. ) { print "Ei saa muuta kataloogi. Põhjus: $!\n\n"; #unless unless ($sone eq koik ) { uc $sone; 1
while / until LABEL while (EXPR) { LABEL while (EXPR) { continue { Kuni EXPR on tõene täidetakse tegevused. LABEL until (EXPR) { LABEL until (EXPR) { continue { Kuni EXPR on väär täidetakse tegevused while/until - näited while ($nimed[$i]) { print $nimed, ; $i++; until ($nimed[$i] eq ) { print $nimed[$i], ; $i++; Muutuja väärtuspiirkond while (my $rida = <STDIN>) { $rida = lc $rida; $i++ if $i == 0; Perli omapära continue { print $rida; #$rida on veel saadaval kiss ( me ) until $I_die; Shutup() unless $you_want_me_to_leave; #$rida pole enam väärtustatud for /foreach for (algväärtus; jätkamise tingimus; kuidas muutub väärtus) { for ($a=0; $a<26; $a++) { for ($a=0; $a<26; $a+=5) { foreach $väärtus @list { foreach $nimi ( Mart, Mati, Maret ) { print $nimi; for / foreach - näited for $count (10,9,8,7,6,5,4,3,2,1, PÕMM ) { print $count\n ; sleep(1); for (@christmas, @easter) { s/ham/turkey/; s/ham/turkey/ for @christmas, @easter; foreach $value (@array) {$sum+=$value foreach $key (sort keys %hash) { print $key => $hash{$key\n ; 2
Blokid while, until, for, foreach last LABEL; next LABEL; redo LABEL; RIDA: while ($line = <STDIN>) { chop ($line); last RIDA if ($rida eq lopp ); next RIDA if ($rida eq veel ); do - näited do{ $line = <STDIN>; until $line eq.\n ; do{{ next if $x == $y; until $x++ > $z; SWITCH for ($I = 0;$I < @ary1;$i++) { for ($j = 0;$j < @ary2;$j++) { WID: foreach $this (@ary1) { JET: foreach $that (@ary2) { SWITCH: { /^abc/ && do { $abc=1; last SWITCH; /^def/ && do { $nothing=1; või if (/^abc/ ) { elsif (/^def/) { else { $nothing=1; if ($ary1[$i] > $ary2[$j]) { last; $ary1[$i] += $ary2[$j]; next WID if $this > $that; $this += $that; Sisend ja väljund STDIN standard sisend (klaviatuur) $rida = <STDIN>; $rida = <FAIL>; STDOUT standard väljund (ekraan) print Tere ; print FAIL Tere ; Failist andmete lugemine open (FAIL, muu.txt ); $esimene_rida = <FAIL>; @ylejaanud_read = <FAIL>; while (<FAIL>) { print $_; close(fail); 3
Failist andmete lugemine (2) open (FAIL, andmed.txt ); while (<FAIL>) { chop; ($nimi,$synd,$lemmik) = split( ; ); if ($synd > 1990) { print Noored\n ; close (FAIL); Faili avamine open (FAIL,???miski.txt ); Lug K irj Lisa U us <PATH Y N N N >PATH N Y N Y >>PATH N Y Y Y +<PATH Y Y N N +>PATH Y Y N Y +>>PATH Y Y Y Y KÄSK N Y n/a n/a KÄSK Y N n/a n/a Lugemine ja kirjutamine unless (open LUG, <kust.txt ) { print Viga: $!\n ; unless (open KIRJ, >kuhu.txt ) { print Viga: $!\n ; while (<LUG>) { print KIRJ $_; close(lug); close(kirj); Printer /Meil open (PRINTER, lpr -Plp1 ) or die $!\n ; print PRINTER stuff\n ; close (PRINTER) or die $!\n ; unless (open (MAIL," /usr/lib/sendmail -t")) { print "Viga $!\n"; print MAIL "To: keegi\@ut.ee (Kellegi Nimi)\n"; print MAIL "From: minult\@ut.ee (Teine Nimi)\n"; print MAIL "Subject: Proov\n"; print MAIL See on juba meili sisu\n"; close(mail); Unixi käskude kasutamine open (SISU, ls -la. ); while (<SISU>) { print $_; close (SISU); Faili avamise viisid Perl 5.6 open (FH, < :raw, $path) or die $!\n ; :raw (binaarne) :text (tekst, vaikimisi) :latin1 (ISO - 8859-1) :utf8 (UTF - 8) :xml Programmifaili algusesse: use open IN => :any, OUT => :utf8 ; 4
Lehekülje kujundamise näide #!/usr/local/bin/perl format top= #lk pea defineerimine Nimi Kuu Summa --------------------------- format STDOUT= #lk defineerimine @<<<<<<< @ @##.## $nimi, $kuu, $summa Lehekülje kujundamise näide (2) unless (open(file,'nimed.txt')) { #faili avamine print Faili avamine ebaõnnestus. Põhjus: $! ; #unless while(<file>){ #faili väljastamine chop; ($nimi,$kuu,$summa)=split(';'); write; #while Lehekülje kujundamise näide (3) Faili sisu: merle;mai;4.98 riina;sept;31.8 Tulemus: Nimi Kuu Summa ---------------------------- merle mai 4.98 riina sept 31.80 #!/usr/local/bin/perl $kata='/home/merle_h/tekst/'; Kataloogi läbimine #kataloog unless ( opendir DIR, $kata) { #kat. avamine print "Viga. Kataloogi ei saa avada: $!\n"; $arv=0; #abimuutuja, mis loeb kataloogide arvu Kataloogi läbimine (2) while ($filename = readdir DIR) { # nimi ilma teeta next if substr($filename,0,1) eq. ; # peidetud faile ei näita print "$filename\n"; if (-d $filename) { $arv++; closedir DIR; print $arv,"\n"; #kataloogi korral suurendame #arvu ühe võrra #kataloogi sulgemine 5