如何让一个Perl脚本在另一个Perl脚本中查看变量?

时间:2009-12-08 22:15:26

标签: perl

我有一个越来越大的Perl脚本,所以我想把它分解成多个脚本。即,我想取出一些大的哈希声明并将它们放入另一个文件中。如何让原始脚本能够查看和使用现在在另一个脚本中声明的变量?

这让我疯了,因为我有一段时间没有使用Perl而且因为我的生活无法理解这一点

4 个答案:

答案 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)

您使用modules。或modulinos

使其成为导出(可选!)某些变量或函数的模块。查看如何使用Exporter模块。

答案 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;