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

Joh*_*ohn 9 perl

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

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

Gre*_*con 15

使用模块:

package Literature;

our %Sidekick = (
  Batman => "Robin",
  Bert   => "Ernie",
  Don    => "Sancho",
);

1;
Run Code Online (Sandbox Code Playgroud)

例如:

#! /usr/bin/perl

use Literature;

foreach my $name (keys %Literature::Sidekick) {
  print "$name => $Literature::Sidekick{$name}\n";
}
Run Code Online (Sandbox Code Playgroud)

输出:

$ ./prog 
Bert => Ernie
Batman => Robin
Don => Sancho
Run Code Online (Sandbox Code Playgroud)

  • 我认为Bert是Ernie的助手,但另有一个很好的例子. (5认同)
  • 有了一点导出魔术,我们甚至可以"使用文学qw(Sidekicks);"而不必使用完整的包名.它会使包装变得更复杂,但最终还是值得的. (4认同)

Chr*_*utz 10

你使用模块.或modulinos.

使它成为一个导出(可选!)一些变量或函数的模块.查看如何使用该Exporter模块.

  • @john:是的,还有其他方法,但它们违反了最佳实践,所以不得泄露. (8认同)

dao*_*oad 5

还有一个使用模块的建议.

模块不难编写或使用.在你写一篇文章之前,它们似乎很难.在第一次之后,它会很容易.许多好东西都来自于使用模块 - 封装,易于测试以及简单的代码重用等等.

有关导出函数的示例模块,请参阅我对类似问题的答案.

此外,Perl社区中的一些非常聪明的人喜欢模块,以至于他们提倡将应用程序编写为模块 - 他们称之为modulinos.该技术运作良好.

所以,总之,今天尝试编写一个模块!