Perl的die和warn函数

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;

原文地址:https://www.cnblogs.com/f-ck-need-u/p/9520707.html

时间: 2024-11-11 09:34:18

Perl的die和warn函数的相关文章

perl学习之:subs函数

在Perl中,sub关键字主要是为了定义一个子例程,那么subs又是什么呢? 首先subs是一个函数,用于预先声明子例程,函数的参数是预声明的函数名列表.那么这个函数存在的意义是什么?首先,通过该函数预声明的那些函数,可以在不用&或者括号的情况下使用;其次,可以覆盖内建的Perl函数,诸如substr等. 下面就给出俩个例子来说明下: 示例脚本1: use strict;use subs qw(func1 func2); func1;func2; sub func1{    print "

Python学习之warn()函数

warn()函数位于warnings模块中,用来发出警告,或者忽略它或引发异常. def warn(message, category=None, stacklevel=1, source=None) 第一个参数message是字符串类型,他是Warning的实例对象. 第二个参数是一个类对象,他指向message的基类. 第三个参数是堆栈深度,整型对象,sys._getframe()的参数. 最后一个就不说了,基本用不着. 拓展: sys._getframe([num]) 从调用堆栈返回一个帧

Perl中uc和lc函数

这两个函数的作用是把字符串的大写字母和小写字母进行转换.如: $side = uc $attrs[0]; 把attrs[0]转换成大写,然后给side变量赋值. $gender = lc $attrs[1]; 把attrs[1]转换成小写,然后给gender赋值. 注意: 两个函数都是把转换之后的字符串作为返回的值 . uc是大写,表示upper convert,lc是小写,表示lower convert Perl中uc和lc函数

perl学习之:字符串函数

一.打开.关闭文件 open的返回值用来确定打开文件的操作是否成功,当其成功时返回非零值,失败时返回零,因此可以如下判断:    if (open(MYFILE, "myfile"))     {        # here is what to do if the file opened successfully    }    当文件操作完毕后,用close(MYFILE); 关闭文件.    读:open(文件句柄,"<文件名")  open(文件句柄,

Perl中的字符串操作函数

1.$position = index(string,substring,skipchars): 该函数返回子串substring在字符串string中的位置,如果不存在,则返回-1:参数skipchars是可选参数,表示查找之前跳过的字符数,即:从该位置处开始查找: 2.rindex(string,substring,skipchars):功能与index()类似,不同的是它从string的右端开始查找: 3.$Len = length(string):求字符串的长度: 4 . $offset

Perl参考函数

这是标准的Perl解释器所支持的所有重要函数/功能的列表.在一个函数中找到它的详细信息. 功能丰富的 Perl:轻松调试 Perl Perl脚本的调试方法 perl 入门教程 abs - 绝对值函数 accept - 接受传入的socket连接 alarm - 调度一个SIGALRM atan2 -Y/X的反正切值,范围在-PI到PI bind - 地址绑定到一个套接字 binmode - 准备二进制文件I / O bless - 创建一个对象 caller - 获取当前子程序调用的上下文 ch

请对 POSIX 风格和兼容 Perl 风格两种正则表达式的主要函数进行类比说明

POSIXF风格的正则表达式主要函数有ereg 函数:(正则表达式匹配).ereg_replace 函数:(正则表达式替换) Perl风格的正则表达式主要函数有preg_match 函数:(进行正则表达式匹配).preg_replace  函数:(执行正则表达式的搜索和替换)   1.匹配正则表达式对比 int ereg ( string $pattern , string $string [, array &$regs ] ) int preg_match ( string $pattern

perl 函数的参数列表

在perl中,定义一个函数的时候,不需要在圆括号内指定具体的参数,所有的参数都从@_ 这个列表中得到 代码示例: sub test { my ($a, $b) = @_; print qq{$a\t$b\n}; } sub test { my $a = shift; my $b = shift; print qq{$a\t$b\n}; } 这样写当然没有问题,但是有一点不足之处在于,缺少了圆括号内的形参列表,没法直观的一眼看出这个函数需要几个参数 所以perl 中函数定义的时候支持下面这种写法

Perl文件测试操作和stat函数

在shell中通过test命令或者中括号[]可以进行文件测试以及其它类型的测试,例如判断文件是否存在,比较操作是否为真等等.perl作为更强大的文本处理语言,它也有文件测试类表达式,而且和shell的文件测试用的字母符号都类似. perl中测试文件的属性来源是perl的内置函数stat,它可以获得文件的13项属性.后文会介绍该函数. 测试符 测试符号都是短横线开头,加一个字母.例如,测试文件是否存在-e "a.log".在可能产生歧义的情况下,这些测试符可以用括号包围,例如:(-e &