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 }

这些都很简单,||?:都可以用来做控制结构,只要我能读懂就行了,这些东西其实可读性不强,最好不要用

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