我有一个非常古老的perl系统(大约8-10岁),但是一个大的(100+ pm文件)。现在由于某种原因需要“重新现代化”它 - 一步一步。
我想要完成的第一件事就是在每个模块中插入我的pragma:
use MySw::PerlDefs;
包含Modern::Perl和/或此问题的内容:How to make "use My::defaults" with modern perl & utf8 defaults?
QST1:推荐的方式是什么?
添加use MySw::PerlDefs;
以便
package MySw::SomePackage; use MySw::PerlDefs; #my new "pragma"
或在包声明后添加包含在BEGIN块中的PerlDefs? e.g:
package MySw::SomePackage; BEGIN {use MySw::PerlDefs;} #my new "pragma" in the BEGIN block
问题:
Ps:我理解比在编译时出现的BEGIN,但在上面的上下文中 - 它并不比“简单使用”好吗?
答案 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.