学习perl的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能使你的表达更加自然。

unless附带的else子句

其实哪怕是在unless结构中也可以使用else语句,虽然支持这样的语法,但是可能会导致困惑:


代码如下:

#!/usr/bin/perl -w
unless ($mon =~ /^Feb/) {
  print "This month has at least thirty days.\n";
} lese {
  print "Do you see what's going on here?\n";
}
#如果用if语句我们可以写成这样:
if ($mon =~ /^Feb/) {
  print "Do you see what's going on here?\n";
} else {
  print "This month has at least thirty days.\n";
}

(0)

相关推荐

  • 学习perl的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

  • Perl中的控制结构学习笔记

    一.条件判断 复制代码 代码如下: if ( ) {       }   elsif ( ) {       }   ...   else{       } 建立i f语句的另一种方法是使用多个表达式,然后根据哪个表达式是真,来运行代码:可以像下面这样来读取上面这个语句块:如果标号为e x p r e s s i o n 1的表达式是真,那么语句块B L O C K 1就运行.否则,控制权转给e l s i f,对e x p r e s s i o n 2进行测试,如果该表达式是真, 则运行B

  • 探索Perl的世界(更新到40集)-Perl视频教程

    Perl 的相比起来还是少.看视频,在入门时还是相当方便的,就象电影来看就好了.我基本 Superor 老师每出一集我都看了.希望大家也认真看看. 记的,学习时要多写,只能看明白,只有 5% 是你的,练习都做一做,就有 30% 是你的啦.其它的如果能根据教程,自己写出自己要的程序,才 80% 是你的. 再次感谢 Superor 老师. 注意下面的内容,如果加 .zip 可以直接下载的.例如:http://www.boobooke.com/v/bbk2869.zip 第1集:第一章 Perl的概述

  • 使用Perl生成随机密码

    可以通过参数控制生成密码中包括的字符种类 #!/usr/bin/perl use strict; use warnings; use Getopt::Std; sub show_help { print "Useage:\n"; print "newp -aAnsl\n"; print "-a\t\t the password contains lower case letters(a-z)\n"; print "-A\t\t the

  • perl如何避免脚本在windows中闪一下就关闭

    当你刚开始学习perl的时候,写好了程序,准备兴高采烈的等待结果输出时,结果双击后,看到屏幕闪了一下,然后什么都没有了.根本没有机会然你看到输出的结果. 怎么解决这种问题呢?其实各种语言都有这个问题!解决的思路就是让程序输出结果以后,继续等待用户的输出就可以了 也就是在脚本的末端加上这样的两行 复制代码 代码如下: print "press <Enter> to continue..."; <STDIN> 这样就可以了.

  • Perl5 OOP学习笔记第1/2页

    在学习了Perl的基本语法之后,学习Perl的OOP,略有心得.不知道Perl各个版本之间OOP是否有区别,但是我是学习的Perl5,所以在标题上将版本号也写出来了.因为了解到PHP4和PHP5的OOP部分就有不小的差别,所以有此担心. 学习Perl的OOP,最关键的两件事情就是package和bless.只要把这两个东西搞清楚也就学会大一半了. Perl的package 感觉Perl的package和Java还真有点相似.Java的package是以CLASSPATH中的目录为根,按目录定义和

  • PerlScript编写ASP(转载)

    Nighthawk注:  尽管这些年来Perl为广大编程爱好者所熟悉,但却对Perl存在一个令人尴尬的误解,以为Perl就是CGI,经常有人问我Perl和CGI,和PHP,和ASP比较如何如何,这是实在是件很遗憾的事情.这里特地贴出下面这篇文摘,也许能减少一些这方面的 误解. 本文将进一步讲述Perl在可嵌入技术的广域性,和PerlScript 在脚本技术领域的功用.以前的文章我说了ePerl.Embed Perl和Mod_Perl 技术,它们都是单独领域的技术,是在本身基础上的延伸.而本文将讲

  • PHP中的递归正则使用说明

    之前一篇文章翻译了Perl语言中的递归正则表达式. 其实不少语言中的正则都是支持递归的, 例如本文要介绍的PHP正则递归. 虽然, 工作中最常用的正则表达式都很"正则", 只用最基本的语法就能解决85%以上的问题, 而且合理有效地使用普通正则来解决复杂问题也是一门技巧与学问; 但是高级一点的语法的确有它存的价值, 有时不用它还真办不了事儿; 况且学习正则的乐趣也在于尝试各种各样的可能性, 满足自己无穷无尽的好奇心. 本文内容, 整理自网文Finer points of PHP regu

  • Python中的一些陷阱与技巧小结

    Python是一种被广泛使用的强大语言,让我们深入这种语言,并且学习一些控制语句的技巧,标准库的窍门和一些常见的陷阱. Python(和它的各种库)非常庞大.它被用于系统自动化.web应用.大数据.数据分析及安全软件.这篇文件旨在展示一些知之甚少的技巧,这些技巧将带领你走上一条开发速度更快.调试更容易并且充满趣味的道路. 学习Python和学习所有其他语言一样,真正有用的资源不是各个语言繁琐的超大官方文档,而是使用常用语法.库和Python社区共享知识的能力. 探索标准数据类型 谦逊的enume

  • 将Perl5代码迁移到Perl6上的解决方案

    无论您是一个正在将Perl 5代码转换为Perl 6并遇到一些问题的程序员,还是您只是想了解如果您尝试将Perl 5程序移植到Perl 6可能会发生什么,本文应该回答您的问题. Perl 6文档已经包含了大部分(如果不是全部)你需要的文件要解决将Perl 5代码迁移到Perl 6时所面临的问题,请执行以下操作.但是,正如文件所述,重点是事实上的差异.我将尝试更深入地讨论具体问题,并根据我将相当多的Perl 5代码移植到Perl 6的经验,提供更多的第一手信息. Perl 6怎么样? 很好,谢谢!

随机推荐