die和warn

  • die可以在出现错误的时候停止程序,并给出消息。默认会输出出错的程序名称和出错行号
  • warn函数和die函数类似,但和die的区别是不会终止程序
  • die和warn的参数末尾如果给了\n,将不会输出出错的程序名称和出错的程序行号
  • use autodie;可以自动探测操作系统层面上的错误并停止程序

例如,下面打开文件的操作:

if ( ! open LOG "<" "/tmp/a.log" ){
die "open file wrong: $!";
}

上面$!是收集操作系统报告的错误,并由perl报告出来。例如没有/tmp/a.log文件,上面的程序段落就会报错:

wrong open file: No such file or directory at 6.plx line 8.

其中的$!对应的消息是"No such file or directory"。

并不是每个错误都会有操作系统对应的错误。有些错误是perl自身的问题,这时候就不需要$!

if ( @ARGV < 2 ){
die "wrong! get help!"
}

默认情况下,die都会自动加上程序名和发生错误的行号。如果不想要这些消息,可以手动在die的末尾加上\n符号。

if ( @ARGV < 2 ){
die "wrong! get help!\n"
}

使用autodie特性,可以

#!/usr/bin/perl

use autodie;
open LOG,"<","/tmp/a.log";
close LOG;

最新文章

  1. R语言获取国内的股票数据
  2. 解决TryUpdateModel对象为空的问题
  3. Web API路由和动作选择
  4. NABC需求分析
  5. boost库使用:vs2013下boost::container::vector编译出错解决
  6. Noip2013心态调整
  7. jquery跨域请求解决方案(我们寻找,我还没有添加验证)
  8. 使用Spire.Doc组件利用模板导出Word文档
  9. SSH执行hql报错:Caused by: org.hibernate.hql.ast.QuerySyntaxException: user is not mapped [from user where username = ?]
  10. 如果用一个循环数组q[0..m-1]表示队列时,该队列只有一个队列头指针front,不设队列尾指针rear,求这个队列中从队列投到队列尾的元素个数(包含队列头、队列尾)。
  11. 利用百度地图api实现定位
  12. C#工具:防sql注入帮助类
  13. python实现随机森林、逻辑回归和朴素贝叶斯的新闻文本分类
  14. Java 获取当前项目所在服务器的 IP 地址
  15. delphi中的 IntToHex()
  16. 【RF库Collections测试】List Should Contain Value
  17. kubernetes pod、service文件yaml模版格式
  18. js备忘录6
  19. IIS错误整理收集【持续更新】
  20. 【AtCoder Regular Contest 080E】Young Maids [堆][线段树]

热门文章

  1. one-to-one 一对一映射关系(转 wq群)
  2. mac os 下 vs code 开发 .net core
  3. jdango
  4. XML学习总结二&mdash;&mdash;DTD
  5. Android中RecyclerView出现java.lang.IndexOutOfBoundsException
  6. 用java开发dota英雄最华丽的技能
  7. 弹性盒子模型属性之flex-shrink
  8. 7.数据库、Contentobserver
  9. 跟繁琐的命令行说拜拜!Gerapy分布式爬虫管理框架来袭!
  10. java 堆 栈 方法区的简单分析