我有一个非常旧的perl系统(大约8-10年),但是有一个很大的系统(100多个pm文件)。现在由于某种原因需要“重新现代化”它-分步进行。

我要完成的第一件事是将每个模块插入到我的编译指示中:

use MySw::PerlDefs;

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

QST1:推荐的方法是什么?
  • 添加use MySw::PerlDefs;,因此将获得包MySw::SomePackage;
    使用MySw::PerlDefs; #my new“pragma”
  • 还是在包声明后在BEGIN块中添加PerlDefs?例如:package MySw::SomePackage;
    BEGIN {使用MySw::PerlDefs;} BEGIN块中的#my新的“编译指示”

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

  • 附:我理解比在编译时执行BEGIN更好,但是在上述情况下-它不比“简单使用”更好吗?

    最佳答案

    将使用包装在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.
    

    关于perl - 将我自己的编译指示添加到旧的perl sw的正确方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11071853/

    10-14 05:50