将我自己的pragma添加到旧perl sw的正确方法

时间:2012-06-17 14:02:22

标签: perl

我有一个非常古老的perl系统(大约8-10岁),但是一个大的(100+ pm文件)。现在由于某种原因需要“重新现代化”它 - 一步一步。

我想要完成的第一件事就是在每个模块中插入我的pragma:

use MySw::PerlDefs;

包含Modern::Perl和/或此问题的内容:How to make "use My::defaults" with modern perl & utf8 defaults?

QST1:推荐的方式是什么?

  1. 添加use MySw::PerlDefs;以便

    package MySw::SomePackage;
    use MySw::PerlDefs;         #my new "pragma"
    

  2. 或在包声明后添加包含在BEGIN块中的PerlDefs? e.g:

     package MySw::SomePackage;
     BEGIN {use MySw::PerlDefs;}  #my new "pragma" in the BEGIN block
    

  3. 问题:

    • 首选方法是什么?
    • 有什么区别和/或缺点?

    Ps:我理解比在编译时出现的BEGIN,但在上面的上下文中 - 它并不比“简单使用”好吗?

1 个答案:

答案 0 :(得分:3)

在BEGIN块中包装使用不起作用;词汇编纂的效果不会延伸到块的末尾。

比较

$ perl -e'BEGIN{ use Modern::Perl; } $x=42; print "$x\n"'
42
$ perl -e'use Modern::Perl; $x=42; print "$x\n"'
Global symbol "$x" requires explicit package name at -e line 1.
Global symbol "$x" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.