【发布时间】:2013-10-02 16:31:43
【问题描述】:
我有以下场景 -> 3 个文件
- 模块.pl
- a.pl
- b.pl
-------------------Module.pm-------
use strict;
use warnings;
Package Foo;
our %hash = ( NAME => "NONE" , SSN => "NONE");
----------a.pl-------
use strict;
use warnings;
use Module;
my $name = "Bill"
my $SSN = "123456789";
# update name and SSN
$Foo::hash{NAME} = $name;
$Foo::hash{SSN} = $SSN;
----------b.pl--------
p>use strict;
use warnings;
use Module;
## print the updated values of name and SSN
print "\nUpdated values -> NAME = $Foo::hash{'NAME'} SSN = $Foo::hash{SSN}";
我先执行 a.pl,然后再执行 b.pl。 但是 a.pl 给出了更新的输出,但 b.pl 仍然为两个字段提供了旧的“NONE”输出。 我什至尝试打印 a.pl 和 b.pl 中的两个值的地址,它们是不同的。
任何想法如何将 a.pl 中更新的值访问到 b.pl 中?
【问题讨论】:
-
这是两个独立的进程;他们应该如何共享变量?
-
那么有没有办法让两个进程共享/更新/访问同一个全局变量?
-
方法很多。哪个最好取决于您的用例。进程是否需要在两者都运行时共享数据,还是一次只运行 1 个?
-
这给出了“
Can't locate object method "Package" via package "Foo"[...]”,而不是您描述的行为。您发布的内容和运行的内容之间还有其他区别吗? -
注意文件名和包名要匹配。