Perl学习笔记-3
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl学习笔记-3相关的知识,希望对你有一定的参考价值。
- 表达式修饰符
为了进一步简化代码书写,表达式后边可以接一个用于控制它行为的修饰符。
- 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;
- 代码块
… 可以为局部变量提供作用域。
- 梯形选择结构
if(...)
elsif(...)
elsif(...)
else
- 自增/自减
perl支持 $i++,$i--
等形式。
- for循环
for($i=1; $i<=10; $i++)
...
for(1..10)
print "I can count to $_!\\n";
- 循环控制命令
- 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 Thats not right.\\n\\n";
$errors++;
redo; #跳回循环顶端
print "Youve 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 wasnt any of the choices... onward!\\n\\n";
print "Thats all, folks!\\n";
- 条件运算符
语法
my $location=&is_weekend($day) ? "home" : "work";
- 逻辑操作符
运算符 | 说明 |
&& | AND |
││ | OR |
满足“短路特性”。
“ // ”运算符
在发现左边的值属于已定义时进行短路操作,而不管该值属于逻辑真还是逻辑假。
有时要给一个未定义变量(undef)赋值,若已定义就保留原值。
my $Verbose=$ENVVERBOSE // 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";
以上是关于Perl学习笔记-3的主要内容,如果未能解决你的问题,请参考以下文章