perl中关键字'require'的用法是什么?我已经提到了require,但它没有用处。
来自http://perldoc.perl.org/functions/require.html
require要求VERSION指定的Perl版本或要求 EXPR指定的某些语义,如果未提供EXPR,则由$ _指定。 VERSION可以是数字参数,例如5.006,也就是 与$]相比,或者是v5.6.1形式的文字 与$ ^ V(又名$ PERL_VERSION)相比。如果是VERSION,则会引发异常 大于当前Perl解释器的版本。相比 使用,可以在编译时进行类似的检查。
从这一点来看,在具有更高版本PERL安装(例如5.22)的Linux机器上的PERL脚本中,下面的代码含义并不十分清楚: -
require 5.006_001;
可以用一个例子来解释,在什么情况下可能需要使用它?
答案 0 :(得分:2)
您链接的文档和引号在第一页上解释了这一点,没有滚动。 (强调我的)。
VERSION可以是数字参数,例如5.006,也就是 与
$]
相比,或者是v5.6.1形式的文字 与$ ^ V(又名$ PERL_VERSION)相比。 如果是VERSION,则会引发异常 大于当前Perl解释器的版本。比较 使用,可以在编译时进行类似的检查。
这个例子就是一个段落。
require v5.6.1; # run time version check require 5.6.1; # ditto require 5.006_001; # ditto; preferred for backwards compatibility
所以很清楚它的作用。它要求你的Perl在运行时至少为5.6.1。如果你有5.22,一切都很好。
使用grep.cpan.me查找使用此功能的情况非常简单,但实际上要获得一些不错的解释需要一些搜索 1 。
Astro::App::Satpass2正在使用require 5.012
和require 5.010
in its lib module My::Module::Recommend。显然,它需要一些大量的功能that don't work on older Perls。
Barcode::Code128有require 5.010
,但其documentation表示需要Perl 5.004。
Mail::SpamAssassin说in its changelog已添加require 5.008001
来修复缺少utf8::is_utf8()
的错误。
最后一个是不同数字样式的一个很好的例子。它不仅需要5.08的特定子版本,而且还省略了_
,它可以在数字中的任何地方使用,以使它们在Perl中更具可读性。
如果您绝对需要使用仅在最近的Perl中可用的特定语法功能,例如替换上的/r
标志,那么更实际的示例,但更难以在CPAN上找到运算符s///
,它添加了非破坏性替换,因此返回结果而不是操作的字符串。 It was added in Perl 5.014。如果您的代码依赖于此,您可以将require 5.014
置于顶部,这样它甚至不会尝试在较旧的Perls上运行,因为它无论如何都会失败。
return $foo->frobnicate(
id => $params->{id},
text_without_whitespace => $params->{text} =~ s/\s+//gr,
);
1)阅读CPAN很有用。做吧。