在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";
}

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";
}

最新文章

  1. C++常见笔试面试要点以及常见问题
  2. HTML思维导图
  3. 解决(空密码的root)提示修改phpmyadmin用户密码
  4. 配置Hadoop开发环境(Eclipse)
  5. Javascript跨域问题解决方案
  6. YAPF:Google开源的Python代码格式化工具
  7. java中的静态static关键字
  8. [读书笔记]算法(Sedgewick著)·第二章.初级排序算法
  9. C# winform 窗体 彻底退出窗体的方法
  10. Dubbo原理解析-监控
  11. RH033读书笔记(6)-Lab 7 Standard I/O and Pipes
  12. 对java中classloader使用的一点理解(转)
  13. jQuery表格排序组件-tablesorter
  14. 在gem5的full system下运行 x86编译的测试程序 running gem5 on ubuntu in full system mode in x86
  15. Standard PHP Library(SPL)中的数据结构
  16. 如何解决Reporting Services目录数据库文件存在的问题
  17. 深入理解javascript 匿名函数和闭包
  18. noj算法 踩气球 回溯法
  19. Java知多少(39)interface接口
  20. elasticsearch解决控制台中文乱码问题

热门文章

  1. Typecho的卡哇伊小猫咪小插件(Live2D猫咪插件)
  2. 2019-08-20 纪中NOIP模拟B组
  3. ubuntu set up 1 - 网络
  4. 我的第一个Maven Helloworld
  5. Wannafly Camp 2020 Day 1H 最大公约数 - 质因数分解,高精度
  6. SDOI2010 粟粟的书架 lg2468(可持久化,前缀和)
  7. 题解 AT859 【元素の系統名】
  8. 1、安装gitlab
  9. c++踩坑大法好 typedef和模板
  10. HTML表单处理