我有一个非常古老的perl系统(大约8-10岁),但是一个大的(100+ pm文件).现在由于某种原因需要"重新现代化"它 - 一步一步.
我想要完成的第一件事就是在每个模块中插入我的pragma:
use MySw::PerlDefs;
Run Code Online (Sandbox Code Playgroud)
什么将包含像Modern :: Perl和/或在这个问题中的东西:如何使用现代perl和utf8默认值"使用My :: defaults"?
QST1:推荐的方式是什么?
添加use MySw::PerlDefs;就会得到
package MySw::SomePackage; use MySw::PerlDefs; #my new "pragma"
或者在包声明后添加包含在BEGIN块中的PerlDefs?例如:
package MySw::SomePackage;
BEGIN {use MySw::PerlDefs;} #my new "pragma" in the BEGIN block
问题:
Ps:我理解比在编译时出现的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.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |