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などの言語ではこのような操作はありません.
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”;
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”;