12. Perl 控制结构-循环

    xiaoxiao2022-07-04  172

    perl 的循环结构有, for, foreach, while, until 四种, 其中for 和 foreach 底层结构一样, 它俩是等价的. while 和 until 是相反的逻辑,类似于if 和 unless 的关系. 控制循环语句有last, next, redo三种方式, 其中redo 是一个很新鲜的关键字, 这是java语言所不支持的.

    1. 循环结构

    1.1 for 循环

    perl 中的for 循环和其它语言for循环用法相同 for( 变量初始化; 测试表达式 ; 变量变化) { codes; }

    1.2 foreach 循环

    perl 语言支持其它语言未必不支持的foreach循环, 主要用于遍历数组或列表, 非常好用和for等价, 用for关键字也行 foreach 变量定义 (数组/列表){ codes }

    1.3 while 循环

    当表达式为真时, 会执行循环体, 直到表达式为假或遇到last 语句后终止循环 while (testExp){ codes; }

    1.4 until 循环

    当表达式为假时, 会执行循环体, 直到表达式为真或遇到last 语句后终止循环 until (testExp){ codes; }

    3. 循环控制

    perl 控制循环的语句有: next, last, redo:

    next: 类似于java 中的continue, 跳过本次循环, 进行下一次循环last: 类似于java 中的break, 直接结束最近的一层循环结构,执行循环结构后的语句redo: 重新执行本次循环

    2. 测试

    2.1 测试脚本

    #Desc 自定义输出工具 #Auth zongf #Date 2019-05-20 print "\n#################### 1.1 for ####################\n"; $sum=0; for(my $j=1; $j<=100; $j++){ $sum += $j; } print "[for] 1+2+3+...+100=$sum\n"; print "\n#################### 1.2 foreach ####################\n"; #简写形式 $sum=0; foreach (1..100){ $sum += $_; } print "[foreach] 1+2+3+...+100=$sum\n"; #标准形式 $sum=0; foreach my $idx ( 1..100) { $sum += $idx; } print "[foreach] 1+2+3+...+100=$sum\n"; print "\n#################### 1.3 while ####################\n"; $sum=0; $i=1; while($i<=100){ $sum += $i; $i++; } print "[while] 1+2+3+...+100=$sum\n"; print "\n#################### 1.4 until ####################\n"; $sum=0; $i=1; until($i>100){ $sum += $i; $i++; } print "[until] 1+2+3+...+100=$sum\n"; print "\n#################### 2. 控制循环 ####################\n"; for my $k(1..100){ print "[$k] please input your match score: 1-redo 2-next 3-last 4-other: "; chomp($flag=<STDIN>); if($flag==1){ # redo redo; }elsif($flag==2){ #next next; }elsif($flag==3){ #last last; }else { } print "[$k] your choese is $flag\n"; } print "finishe ...\n";

    2.2 测试输出

    $ ./test.pl #################### 1.1 for #################### [for] 1+2+3+...+100=5050 #################### 1.2 foreach #################### [foreach] 1+2+3+...+100=5050 [foreach] 1+2+3+...+100=5050 #################### 1.3 while #################### [while] 1+2+3+...+100=5050 #################### 1.4 until #################### [until] 1+2+3+...+100=5050 #################### 2. 控制循环 #################### [1] please input your match score: 1-redo 2-next 3-last 4-other: 4 [1] your choese is 4 [2] please input your match score: 1-redo 2-next 3-last 4-other: 1
    最新回复(0)