Perl学习笔记-3

  1. 表达式修饰符
    为了进一步简化代码书写,表达式后边可以接一个用于控制它行为的修饰符。
  • if修饰符
print "$n is a negative number.\n" if $n <0;

即使表达式修饰符写在后边,它任然会先执行。

  • 其他修饰符
&report("something wrong") unless &okok($input);
$i *= 2 until $i > $j;
print "---", ($n+=2) while $n < 10;
$invoke($_) foreach @babala;
  1. 代码块

{… }可以为局部变量提供作用域。

  1. 梯形选择结构
if(...){

}elsif(...){

}elsif(...){

}else{

}
  1. 自增/自减

perl支持 $i++,$i--等形式。

  1. for循环
for($i=1; $i<=10; $i++){
	...
}
for(1..10){
	print "I can count to $_!\n";
}
  1. 循环控制命令
  • last
    类似break。
    last在for,foreach,while,until中都可以用。在循环嵌套的情况下只对最内层循环起作用。
  • next
    类似continue,可以结合表达式修饰符。
next if /\W/;

next在for,foreach,while,until中都可以用。在循环嵌套的情况下只对最内层循环起作用。

  • redo
    将控制返回到当前循环块的顶部,而不经过任何循环测试,也不会进入下一次循环迭代。
    来个例子
    注意:对于<STDIN>的错误输入,在修改时退格键(Backspace)也会被当成字符送入输入缓冲区,从而无法删除错误的字符。这时可以使用 “ Ctrl + Backspace ”来删除错误字符。
#!/usr/bin/perl

use utf8;

#打字测验
my @words=qw{ apple bread pear banana rudimentary renaissance  };
my $errors=0;

foreach(@words){
    ## redo 会跳到这里 ##
    print "Type the word '$_': ";
    chomp(my $try=<STDIN>);
    if($try ne $_){
        print "Sorry That's not right.\n\n";
        $errors++;
        redo; #跳回循环顶端
    }
}
print "You've completed the test, with $errors errors.\n";

redo在for,foreach,while,until中都可以用。在循环嵌套的情况下只对最内层循环起作用。
next和redo的区别在于:
next会正常继续下一次迭代,而redo则会重新执行这次迭代。

#!/usr/bin/perl

foreach(1..10){
    print "Iteration number $_.\n\n";
    print "Please choose: last, next, redo, or none of the above?";
    chomp(my $choice=<STDIN>);
    print "\n";
    last if $choice =~ /last/i;
    next if $choice =~ /next/i;
    redo if $choice =~ /redo/i;
    print "That wasn't any of the choices... onward!\n\n";
    print "That's all, folks!\n";
}
  1. 条件运算符
    语法
my $location=&is_weekend($day) ? "home" : "work";
  1. 逻辑操作符
运算符说明
&&AND
││OR

满足“短路特性”。

“ // ”运算符
在发现左边的值属于已定义时进行短路操作,而不管该值属于逻辑真还是逻辑假。
有时要给一个未定义变量(undef)赋值,若已定义就保留原值。

my $Verbose=$ENV{VERBOSE} // 1;
print "I can talk to you!\n" if $Verbose;

再来一个例子

#!/usr/bin/perl

foreach my $try(0, undef, '0', 1, 25){
    print "Trying [$try] ---> ";
    my $value = $try // 'default';
    print "\tgot [$value]\n";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值