了解在Perl中使用require

时间:2016-02-09 11:04:45

标签: perl

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;

可以用一个例子来解释,在什么情况下可能需要使用它?

1 个答案:

答案 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,一切都很好。

关于CPAN的例子

使用grep.cpan.me查找使用此功能的情况非常简单,但实际上要获得一些不错的解释需要一些搜索 1

最后一个是不同数字样式的一个很好的例子。它不仅需要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很有用。做吧。