我在Perl中遇到了一个范围问题。我有一个名为“member”的全局哈希。我调用一个函数,可以在哈希中显示一个对象的属性(密码)。但是当我尝试从调用sub获取此密码属性时,它没有被定义(尽管该对象确实存在)。
以下是代码:
my($userid) = @_;
my($guid);
$guid = SQL->new($MembersTable,'userid');
$guid->where('userid');
$guid->columns('userid','password');
%member = (%member, $guid->select($userid));
# error($member{$userid}{'password'});
# $member{$userid}{'password'} = 'test';
guid有一个名为password的属性。如果我在第一个注释行打印出来,我可以看到这个函数中的值,但是当它返回到调用子时它已经消失了。
如果我通过取消注释第二行显式设置属性,我可以获得调用子中的值。
我显然缺少一些非常基本的东西,但它是什么?!