1K+ 阅读量
Perl 中的匹配运算符 m// 用于将字符串或语句与正则表达式进行匹配。例如,要将字符序列“foo”与标量 $bar 进行匹配,可以使用以下语句:示例 在线演示#!/usr/bin/perl $bar = "This is foo and again foo"; if ($bar =~ /foo/) { print "第一次匹配"; } else { print "第一次不匹配"; } $bar = "foo"; if ($bar =~ /foo/) { print "第二次匹配"; } else { print "第二次不匹配"; }当执行上述程序时,... 阅读更多
197 阅读量
Perl 中有各种与文件句柄相关的特殊变量。我们已在下面的表格中列出了它们:$|如果设置为非零值,则在当前选择的输出通道上的每次写入或打印后强制执行 fflush(3)。$OUTPUT_AUTOFLUSH$%当前选择的输出通道的当前页码。$FORMAT_PAGE_NUMBER$=当前选择的输出通道的当前页面长度(可打印行)。默认值为 60。$FORMAT_LINES_PER_PAGE$-当前选择的输出通道页面上剩余的行数$FORMAT_LINES_LEFT$~当前选择的输出通道的当前报表格式的名称。默认值为文件句柄的名称。$FORMAT_NAME$^当前选择的输出通道的当前页面顶部的格式名称。... 阅读更多
633 阅读量
Perl 中有各种正则表达式特殊变量。我们已在下面的表格中列出了它们:$digit包含上次匹配模式中相应括号集匹配的文本。例如,$1 匹配上一个正则表达式中第一组括号中包含的内容。$&上次成功模式匹配匹配的字符串。$MATCH$`上次成功模式匹配之前匹配的字符串。$PREMATCH$'上次成功模式匹配之后匹配的字符串。$POSTMATCH$+上次搜索模式匹配的最后一个括号。如果您不知道括号集中的哪一个匹配,这将很有用。... 阅读更多
320 阅读量
Perl 中有各种全局特殊变量。我们已根据其用途和性质将它们列在不同的块中:全局数组特殊变量@ARGV包含用于脚本的命令行参数的数组。@INC包含要由 do、require 或 use 构造查找的 Perl 脚本列表的数组。@F当给出 -a 命令行开关时,输入行分割到的数组。全局哈希特殊变量%INC包含每个已通过 do 或 require 包含的文件的文件名的条目。%ENV包含您当前环境的哈希。%SIG用于设置信号的哈希... 阅读更多
Perl 中的 confess 函数类似于 cluck;它调用 die,然后打印一直到源脚本的堆栈跟踪。package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { confess "模块中出错!"; } 1;当从如下脚本调用时:−use T; function();它将产生以下结果:−模块中出错!在 T.pm 第 9 行 T::function() 在 test.pl 第 4 行调用
3K+ 阅读量
Perl 中的 croak 函数等效于 die,除了它向上报告一个级别的调用者。与 die 一样,此函数还在向 STDERR 报告错误后退出脚本:−package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { croak "模块中出错!"; } 1;当从如下脚本调用时:−use T; function();它将产生以下结果:−模块中出错!在 test.pl 第 4 行与 carp 一样,根据 warn 和 die 函数,相同的基本规则适用于包含行和文件信息。
814 阅读量
Perl 中的 cluck 函数是一种增强的 carp,它遵循相同的基本原理,但还会打印导致调用该函数的所有模块的堆栈跟踪,包括原始脚本的信息。package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp qw(cluck); sub function { cluck "模块中出错!"; } 1;当从如下脚本调用时:−use T; function();它将产生以下结果:−模块中出错!在 T.pm 第 9 行 T::function() 在 test.pl 第 4 行调用
911 阅读量
Perl 中的 carp 函数与 warn 基本等效,并将消息打印到 STDERR,而不会实际退出脚本并打印脚本名称。package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { carp "模块中出错!"; } 1;当从如下脚本调用时:−use T; function();它将产生以下结果:−模块中出错!在 test.pl 第 4 行
149 阅读量
在使用 Perl 编程时,我们应该能够处理两种不同的情况:−报告模块中的错误,该错误引用模块的文件名和行号 - 这在调试模块时很有用,或者当您专门想要引发与模块相关的而不是与脚本相关的错误时。−报告模块中引发的错误,该错误引用调用者的信息,以便您可以调试导致错误的脚本中的行。以这种方式引发的错误对最终用户很有用,因为它们突出显示了与调用脚本的源代码行相关的错误。warn 和 die ... 阅读更多
902 阅读量
Perl 中的 unless 函数与 if 逻辑相反:语句可以完全绕过成功状态,并且仅在表达式返回 false 时才执行。例如:−unless(chdir("/etc")) { die "错误:无法更改目录 - $!"; }unless 语句最适合在您只想在表达式失败时引发错误或备选方案时使用。该语句在单行语句中使用时也有意义:−die "错误:无法更改目录!: $!" unless(chdir("/etc"));在这里,我们仅在 chdir 操作失败时才退出。die 函数die 函数的工作原理与 warn 相同,除了它还会调用 exit。在... 阅读更多