【发布时间】:2015-10-20 20:40:06
【问题描述】:
来自 Python 和 Java 背景,这让我有点困惑。我有以下文件:
常量.pm
Utils.pl
Main.pl
Constants.pm 有我想与 Main.pl 和 Utils.pl 共享的全局变量。
Utils.pl 有我想与 Constants.pm 和 Main.pl
共享的辅助子程序#################### Constants.pm
package Constants;
require "Utils.pl";
use Exporter;
our @ISA = 'Exporter';
my %config = parseConfigFile("File.properties");
our @EXPORT = qw($var1 $var2 $var3);
our ($var1, $var2, $var3);
$var1 = $config{var1};
$var2 = $config{var2};
$var3 = $config{var3};
#################### Utils.pl
package Utils;
use Constants;
sub parseConfigFile {};
sub someSub {};
#################### Main.pl
use Constants;
require "Utils.pl"
my $var = someSub($var1);
当我运行 Main.pl 我得到 someSub is undefined 错误
请帮忙,谢谢!
编辑:我没有尝试过@ikegami 的答案,而是将常量中的所有内容移至 Utils.pm 并通过在 main.pl 中使用“use”导入 Utils
【问题讨论】:
-
require "Utils.pl"没有意义。Utils.pl不是模块。 -
Re “当我运行 Main.pl 时,我得到 someSub is undefined 错误”,不,你得到一个语法错误。 (
syntax error at a.pl line 4, near "my ") -
第二个答案告诉我我可以使用“require”stackoverflow.com/questions/1712016/…
-
require用于带有package的文件。do用于没有的文件(这是一个非常糟糕的做法)。见this -
好的,请参阅上面的更新。我添加了“package Utils;”到 Utils.pl 但现在我得到 parseConfigFile 在 Constants.pm 第 6 行未定义
标签: perl