perl學習日記10更多控制語句

1.    更多控制結構

1.1      unless 控制結構

unless($fred =~ /^[A-Z_]/w*$/i){

print “The value of /$fred doesn’t look like a Perl identifier name./n”;

}

相當於

if($fred =~ /^[A-Z_]/w*$/i){

#什麼也不做

}else{

print “The value of /$fred doesn’t look like a Perl identifier name./n”;

}

 

unless ($mon =~ /^Feb/){

print “This month has at least thirty days./n”;

}else{

print “Do you see what’s going on here?/n”;

}

相當於

if($mon =~ /^Feb/){

print “Do you see what’s going on here?/n”;

}else{

print “This month has at least thirty days./n”;

}

1.2      until 控制結構

有時,希望將while 循環的條件部分取反。此時,可以使用until

until($j > $i){

$j *=2;

}

1.3      表達式修飾符

print “$n is a negative number./n”if $n<0;

&error(“Invalid input”) unless &valid($input);

$i *= 2 unitl $i > $j;

print “”, ($n += 2) while $n <10;

&greet($_) foreach @person;

1.4      The Naked Block 控制結構

你也可能在其它地方使用過“裸的”塊,這通常是爲臨時變量提供作用域:

{

print “Please enter a number:”;

chomp(my $n = <STDIN>);

my $root = sqrt $n; #計算平方根

print “The square root of $n is $root./n”;

}

1.5      elsif 語句

if(!defined $dino){

print “The value is undef./n”;

}elsif($dino =~ /^-?/d+/.?$/){

print “The value is an integer./n”;

}elsif($dino =~ /^-?/d*/./d+$/){

print “The value is a _simple_ floating-point number./n”;

}elsif($dino eq‘’){

print “The value is the empty string./n”;

}else{

print “The value si the string ‘$dino’./n”;

}

1.6      自增和自減

$bedrock++; #$bedrock 的值加1

$bedrock--; #$bedrock 值減1

c一樣可以有++$bedrock--$dedrock意義和c也一樣

1.7      for 控制結構

用法和c一樣

1.8      循環控制

1.8.1.last 操作

last 會立刻結束循環。(這同語言或其它語言中的break語句類似)

1.8.2.next 操作

next 之後,又會進入下一輪循環(這和或者類似語言的continue相似

1.8.3.redo 操作

它會調到當前循環塊的頂端,不進行條件表達式判斷以及接着本次循環。(在或類似語

言中沒有這種操作。)

next redo 的最大區別在於,next 會進入下一次循環,而redo 會繼續執行本次循環

1.8.4.標籤塊

如果要從最內層的循環中跳出來,可以使用標籤(label)

LINE: while(<>){

oreach (split){

last LINE if /_ _END_ _/; #推出Line 循環

}

}

1.9      邏輯操作符

&&||

c語言一樣,如果是&&,前面的判斷失敗後就直接返回,不會執行後面的東西

如果是||,前面成功之後也不會執行後面的東西,這叫短路

1.9.1.短路操作的值

c不同的是它的返回值不再是簡單的boolean

my $last_name = $last_name{$someone} ||‘(No last name)’;

如果$someone 不在hash 中,則左側值爲undef,爲false。從而,右側代碼將被執行,並將其作爲默認值

1.9.2.      三元操作符?:

c一樣

1.9.3.控制結構:使用部分求值的操作符

($m < $n) && ($m = $n); #相當於:if($m < $n) {$m = $n }

這些都很簡單,||?:都可以用來做控制結構,只要我能讀懂就行了,這些東西其實可讀性不強,最好不要用

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章