我有一般性问题:以下代码有什么区别?
代码1:
BEGIN {
push @INC,"/usr/local/bin/";
}
require "package.pl";
代码2:
require "/usr/local/bin/package.pl";
哪一个更好?
答案 0 :(得分:2)
我建议不要做任何类似的事情。从/usr/local/bin
加载一些东西就好像它是一个模块一样,要求将来的痛苦和脆弱的代码。
为什么不使用模块呢?模块很像perl脚本,但它的设计和构建是为了导入并在其他脚本中使用。因此,将来搞乱它的任何人都会适当考虑到这一点(希望 - 但至少他们有机会,从bin
目录导入随机脚本是没有机会的。)
这很简单 - 包装看起来像这样:
#!/usr/bin/perl
use strict;
use warnings;
package MyPackage;
sub do_something {
print "Done something\n";
}
1;
另存为' MyPackage.pm'。
然后加载它'使用:
#!/usr/bin/perl
use strict;
use warnings;
use FindBin;
use lib $FindBin::RealBin . "/modules";
use MyPackage;
真的很简单,而不是容易破碎。