【发布时间】:2026-01-07 13:55:01
【问题描述】:
以下代码仅在没有严格限制的情况下有效。 任何人都可以提出更好的方法吗?
%hash5=('key5', 5);
my $hash_name = 'hash5';
print $$hash_name{'key5'}, "\n";
我的目标是:我不知道哈希名称。我只知道,它是存储在 变量 $hash_name。人们一直在建议这样的事情:
my $hashref = \%hashABC;
这需要我知道哈希名称是 '%hashABC'。 使用上面的这个例子,我想做一些事情:
my $hash_name = 'hashABC';
my $hashref = \%$hash_name; # not possible, hope u get the aim
现在我不再需要知道哈希的名称了。 这就是我想要的。
谢谢很多人! (perl 5)
【问题讨论】:
-
但是,当您执行
my $hash_name = 'hash5';时,您需要知道哈希名称。设置引用后,我也不再需要实际的哈希名称。 -
抱歉,这种方法既不比其他方法更易读也更直观,并且很可能引入难以发现的错误。请改用散列散列或散列数组。例如,
my %people = ( bob => { age => 55, phone => '123-4567' }, fred => { age => 42, phone '345-6789' } );要打印所有电话号码,请执行foreach my $person (keys %people) { print $people{$person}{phone}, "\n"; } -
您还可以使用对象来封装您的数据,允许您执行以下操作:
foreach my $person (@people) { print $person->phone_number, "\n"; }请参阅perldoc perlootut。