Perl学习笔记-3

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 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";
  1. 条件运算符
    语法
my $location=&is_weekend($day) ? "home" : "work";
  1. 逻辑操作符

运算符

说明

&&

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的主要内容,如果未能解决你的问题,请参考以下文章

Perl学习笔记-3

Perl学习笔记-9(切片)

Perl语言学习笔记 15 智能匹配与give-when结构

Perl 学习笔记

perl编程综合小骆驼学习笔记

perl控制结构学习笔记