• perl学习(8) 控制:unless,until,next,redo,last


    Perl中实现了所有C 的操作符!

    Perl力求代码最少! 

    1.1.unless

    unless的含义是:除非条件为真,否则执行块中的代码,和if正好相反

    unless($fred=~ /^[A-Z_]w*$/i){

           print “The value of $fred doesn’t looklike a Perl identifier name. ”;

    }

    else

    {

           print “match success ”;

    }

    #大写字母或者下划线开头的字符串

    1.2.until

    while 循环的条件部分取反

    until($j> $i){

           $j *=2;

    } 

    1.3.表达式修饰符 

    print“$n is a negative number. ”if $n<0;

    &error(“Invalidinput”) unless &valid($input);

    $i *=2 unitl $i > $j;

    print“”, ($n += 2) while $n <10;

    &greet($_)foreach @person;

    Perler 一般都喜欢少输入些字符。简写的形式读起来很像英文:输出这段消息,如果$n 小于0

    条件表达式虽然被放在后面,也是先被求值 

    1.4.for

    for($i=1; $i <=10; $i++){ #从1到10

           print “I can count to $i; ”;

    }

     

    对于Perl 解析器(parser)而言,关键字foreach for 是等价的。
    for(1..10){ #实际上是foreach 循环,从1到10

           print “I can count to $_! ”;

    } 

    1.5.last

    last 会立刻结束循环。(这同C 语言或其它语言中的“break”语句类似)。

    #输出所有出现fred 的行,直到遇见_ _END_ _标记

    while(<STDIN>){

           if(/_ _ END_ _/){

                  #这个标记之后不会有其它输入了

                  last;

           }elsif(/fred/){

                  print;

           }

    }

    ##last跳转到这里##

     

    Perl 的5 种循环体分别是for,foreach, while, until,以及“裸”块{},last 对整个循环块其作用。

     

    #! /usr/bin/perl -w

    use strict;

    use warnings ; 

    {

       print "test1 ";

       last;

       print "test2";

    } 

    1.6.next

    next 之后,又会进入下一轮循环(这和C 或者类似语言的“continue”相似)

    1.7.redo

    循环控制的第三个操作是redo。它会调到当前循环块的顶端,不进行条件表达式判断以及接着本次循环。(在C 或类似语言中没有这种操作。) 

     

    #!/usr/bin/perl -w
    use strict ;
    use warnings; 
    #输入测试
    my @words = qw{ fredbarney pebbles dinoWilma betty };
    my $errors = 0;
    foreach(@words)
    {
        ##redo 跳到这里##
        print "Type the word $_: ";
        chomp(my $try = <STDIN>);
        if($try ne $_){
            print "sorry ?That’s not right.
    
    ";
            $errors++;
            redo; #跳转到循环顶端
        }
    }
    print "You’ve completed the test, with $errorserror
    "; 

    1.8.标签块

    Larry 推荐标签均大写。这会防止标签和其它标识符冲突,同时也使之在代码中更突出。同时,标签很少使用,通常只在很少一部分程序中出现。

    这个和c是同样的,为了保证逻辑和维护的简明,尽量不适用goto

    goto 

    1.9.逻辑操作符

    逻辑与AND(&&)

    逻辑或OR (||

    逻辑或||有另外的含义,perl里面成为:短路操作

    my$last_name = $last_name{$someone} ||‘(No last name)’

    即在%last_name 中不存在$someone时,$last_name = ‘(No last name)’

     逻辑操作符还能用来控制结构

    ($m< $n) && ($m = $n);

    ($m> 10) || print“why it it not greater? ”

    1.10.    三元操作符

    my$location = &is_weekend($day) ? “home”: “work”;

  • 相关阅读:
    Oracle中修改表名遇到“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”
    zabbix监控华为服务器硬件状态
    基于LLDP和OpenFlow的网络拓扑检测
    应用nslookup命令查看A记录、MX记录、CNAME记录和NS记录
    Dockerfile
    Get Docker CE for CentOS
    前端构建工具gulpjs的使用介绍及技巧
    Error: Cannot find module 'gulp-clone'问题的解决
    oracle 12C wmsys.wm_concat()函数
    Windows实现内网IPMI端口转发
  • 原文地址:https://www.cnblogs.com/riskyer/p/3320142.html
Copyright © 2020-2023  润新知