Perl脚本语言学习2

perl学习2: 控制程序流 (foreach是核心)


前言

  • 语句块

  • 运算符

  • 循环

  • 标号

  • 退出perl


1.语句块:

  • if语句(几乎与C语言类似,除了elsif)

代码如下(示例):

$r = 10;
if ($r == 10){
    print '$r is 10!';
}
elsif ($r == 20){
    print '$r is 20!';
}
else{
    print '$r is neither 10 nor 20.'
}
# 如果只有一个条件可以把if放到后面
print "Hello!" if (1 == 1);
  • perl的unless控制结构

在perl的if控制结构中,只有当条件表达式为真时才执行某块代码。如果想让程序块在条件为假时才执行,此时可以把if改成unless

代码如下:

unless ($fred =~ /^([A-Z_]\w*$/i) {
  print "The value of \$fred doesn't look like a Perl identifier name. \n";
}

使用unless意味着,要么条件为真,要么执行某块代码。这就好像使用if控制结构来判断相反的条件。另一种说法是它类似于独立的else子句。也就是说,当看不懂某个unless语句时,可以用如下的if语句来代替:
代码如下:

if ($fred =~ /^([A-Z_]\w*$/i) {
  //什么都不做
} else {
   print "The value of \$fred doesn't look like a Perl identifier name. \n";
}

如此操作与运行效率高低无关,两种写法应该会被统译成相同的内部字节码。另外一个改写的方法,就是以取反操作符!来否定条件:
代码如下:

if ( ! ($fred =~ /^([A-Z_]\w*$/i) ) {
  print "The value of \$fred doesn't look like a Perl identifier name. \n";
}

通常应该选择最容易理解的方法来写代码,因为这通常对于维护程序员来说也是最容易理解的。如果用if来表达最合适,那么就这么写也行。但是更多的情况下使用unless能使你的表达更加自然。

2.字符关系运算符(类似于=, >, <, >=, <=, !=)?

  1. eq等于;
  2. gt大于;
  3. lt小于;
  4. ge大于等于;
  5. le小于等于;
  6. ne不等于;

perl中有哪些假值? 0;“”;‘’;‘0’;“0”;undef;
逻辑运算符有哪些? and; or; not;

代码如下(示例):

if ($x and $y and not $z){
    print "All conditions met.\n";
}else{
    print "Not all.\n"
}

逻辑运算符短路,即一旦确定表达式是真或假,就立即停止逻辑表达式的计算,最常见的是

open(FILE, "test.txt") or die "can't open file:$!\n";

3.循环语句(与C语言完全相同)

$count = 0;
while ($count <= 10){
    print "$count\n";
    $count++;
}
for($i; $i <= 10; $i++){
    print "i is now $i\n";
}
#高级perl技巧:使用foreach进行遍历
@name = qw(li zhi xin);
print "my name is ";
foreach $name (@name){  # $name是对@name中元素的引用,可以修改@name
    print "$name "
}

4.流程控制工具

last语句(退出当前循环)(等同于C里的break)

$count = 1;
while($count <= 15){
    last if ($count == 5);
    print "$count\n";
    $count++;
}
for($i=0; $i <= 100; $i++){
    for($j=0; $j <= 100; $j++){
        if ($i * $j == 140){
            print "The product of $i and $j is 140.\n";
            last;
        }
    }
}

next语句(回到当前循环头部)(等同于C里的continue)

for($i=0; $i <= 100; $i++){
    next if (not $i % 2);
    print "An odd number = $i\n";
}

语句块和循环语句可以设置标号,last、redo 和 next都可以带一个标号。(等价于C的loop语句)
退出perl? exit 0;代表正常退出perl。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值