迴圈與控制結構
# 迴圈與控制結構 # (1) for for($i=0;$i<10;++$i){ print $i; # 印出 0123456789 } # 註:{} 不可省略 # (2) while # (A) $i=0; while($i<10){ print $i; # 印出 0123456789 ++$i; } # (B) while( ($key,$value) = each %hash ){ print "$key is $value\n"; } # (3) do while do { print $i; $i++; }while($i<10); # (4) until(與 while 相反) until($i>=10){ print $i; $i++; } # (5) foreach # (A) @arr = (1,2,3,4); foreach $i (@arr){ print $i; # 印出 @arr 所有元素 } # (B) %hash = ("Bill" => "boy","Mary" => "gril"); foreach $key (keys %hash){ # 印出 %hash 所有元素 print "$key is $hash{$key}\n"; } # (C) print foreach (1 .. 9); # 倒裝 # (D) foreach 可簡寫成 for print for 1 .. 9; # (6) last, next and redo while($something){ # redo 跳到這裡重新開始 # something ... if($ok){ next; # next 跳過目前此次迭代 } if($oops){ redo; # redo 重新執行目前此次迭代 } # something ... if($error){ last; # last 會終止圈 } # something ... # next 跳到這裡 } # last 跳到這裡繼續執行 # 註:next, last 與 redo 皆可用在 for,foreach,while 與 until 等迴圈。 # (7) if # (A) $a = 5; if($a > 3){ print "$a > 3\n"; }elsif($a < 3){ print "$a < 3\n"; }else{ print "$a = 3\n"; } # (B) $val = 3; # 倒裝,等同於: if ($val>0) { print $val; } print $val if $val > 0; # (8) unless (與 if 相反) $a = 5; print "$a > 4" unless($a <= 4); # 練習一 # # 1.寫一個 perl script 印出九九乘法表 # # 基本版 for($i=1;$i<10;++$i){ for($j=1;$j<10;++$j){ print $j . "x" . $i . "=", $i*$j, " "; } print "\n"; } # 排版整齊 for($i=1;$i<10;++$i){ for($j=1;$j<10;++$j){ print $j . "x" . $i . "=", $i*$j, " "; if($i*$j < 10){ print " "; } } print "\n"; } # 精簡版 for $i (1 .. 9){ printf "%dx%d=%-3d",$_,$i,$i*$_ for (1 .. 9); print "\n"; }
繼續閱讀:Perl 程式設計教學