迴圈與控制結構#
# 迴圈與控制結構
# (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";
}