我有一个越来越大的Perl脚本,所以我想把它分解成多个脚本。即,我想取出一些大的哈希声明并将它们放入另一个文件中。如何让原始脚本能够查看和使用现在在另一个脚本中声明的变量?
这让我疯了,因为我有一段时间没有使用Perl而且因为我的生活无法理解这一点
答案 0 :(得分:15)
使用模块:
package Literature;
our %Sidekick = (
Batman => "Robin",
Bert => "Ernie",
Don => "Sancho",
);
1;
例如:
#! /usr/bin/perl
use Literature;
foreach my $name (keys %Literature::Sidekick) {
print "$name => $Literature::Sidekick{$name}\n";
}
输出:
$ ./prog
Bert => Ernie
Batman => Robin
Don => Sancho
答案 1 :(得分:10)
答案 2 :(得分:5)
使用模块的另一个建议。
模块不难编写或使用。在你写一篇文章之前,它们似乎很难。在第一次之后,它会很容易。许多好东西都来自于使用模块 - 封装,易于测试以及简单的代码重用等等。
有关导出函数的示例模块,请参阅my answer to a similar question。
此外,Perl社区中的some very smart people类似于模块they advocate writing apps as modules - they call them modulinos。这项技术运作良好。
总而言之,今天尝试编写一个模块!
答案 3 :(得分:4)
作为对其他“使用模块”建议的补充,如果您计划重复使用该模块,则需要将其安装到您的站点库中(通常位于...(perl install folder)...\site\lib
下。
如果没有(可能,它在脚本之外的可重用性有限),您可以将其保存在脚本目录中并导入它:
use lib './lib'; # where ./lib is replaced with wherever the module actually is.
use MyModule;