perl学習(8)制御:unless,until,next,redo,last

2776 ワード

PerlではすべてのCのオペレータを実現しました!
Perlはコードを最小限に抑える! 
1.1.unless
unlessの意味は、条件が真でない限り、ブロック内のコードがifと正反対に実行されることです.
unless($fred=~/^[A-Z_]\w*$/i){
       print “The value of\$fred doesn’t looklike a Perl identifier name.”;
}
else
{
       print “match success”;
}
#大文字または下線で始まる文字列
 
1.2.until
whileサイクルの条件部分を反転
until($j> $i){
       $j *=2;

1.3.エクスプレッション修飾子
print“$n is a negative number.”if $n<0;
&error(“Invalidinput”) unless &valid($input);
$i *=2 unitl $i > $j;
print“”, ($n += 2) while $n <10;
&greet($_)foreach @person;
Perlerは一般的に文字を少なく入力するのが好きです.簡潔な形式は英語に似ています.$nが0未満の場合、このメッセージを出力します.
条件式は後ろに置かれますが、先に評価されます.
1.4.for
for($i=1;$i<=10;$i+){#1から10
       print “I can count to $i;”;
}
 
Perl解析器(parser)にとって,キーワードforeachとforは等価である.for(1..10){#は実際にはforeachサイクルで、1から10まで
       print “I can count to $_!”;

1.5.last
lastはすぐにループを終了します.(これはC言語または他の言語の「break」文と似ています).
#fredが現れるすべての行を出力し、出会うまで_END_ _マーク
while(){
       if(/_ _ END_ _/){
このタグの後に他の入力はありません
              last;
       }elsif(/fred/){
              print;
       }
}
♪lastはここまでジャンプ♪
 
Perlの5つの循環体はそれぞれfor,foreach,while,until,および「裸」ブロック{}であり,lastは循環ブロック全体に作用する.
 
#!/usr/bin/perl -w
use strict;
use warnings ; 
{
   print "test1";
   last;
   print "test2";

1.6.next
nextの後、また次のループに入ります(これはCや類似言語の「continue」と似ています)
1.7.redo
サイクル制御の3番目の操作はredoである.現在のループブロックの先頭に移動し、条件式の判断や今回のループに続くことはありません.△Cなどの言語ではこのような操作はありません.
#!/usr/bin/perl -w
use strict ;
use warnings; 
#    
my @words = qw{ fredbarney pebbles dinoWilma betty };
my $errors = 0;
foreach(@words)
{
    ##redo     ##
    print "Type the word $_: ";
    chomp(my $try = <STDIN>);
    if($try ne $_){
        print "sorry ?That’s not right.

"; $errors++; redo; # } } print "You’ve completed the test, with $errorserror
";

1.8.ラベルブロック
Larry推奨ラベルはすべて大文字です.これにより、ラベルと他の識別子の競合が防止され、コード内でより強調されます.また、ラベルはあまり使用されず、通常は一部のプログラムにのみ表示されます.
これはcと同じで、論理とメンテナンスの簡明さを保証するために、できるだけgotoを適用しない.
goto 
1.9.ろんりオペレータ
論理とAND(&&)
論理またはOR(|)
ロジックまたは|別の意味があり、perlにはショート操作
my$last_name = $last_name{$someone} ||‘(No last name)’
つまり%last_nameに$someoneが存在しない場合、$last_name = ‘(No last name)’
論理オペレータは、構造を制御するためにも使用できます.
($m< $n) && ($m = $n);
($m> 10) || print“why it it not greater?”
1.10.さんげんオペレータ
my$location = &is_weekend($day) ? “home”: “work”;