如何使用变量名引用哈希?

fre*_*der 0 perl hash hashref

我有一组预定义的哈希表,我想使用变量名称引用其中一个哈希并访问键值.即使填充了哈希,以下代码也会返回null.我在这里做错了什么,或者有更好的方法来实现这一目标?

my %TEXT1 = (1 => 'Hello World',);
my %TEXT2 = (1 => 'Hello Mars',);
my %TEXT3 = (1 => 'Hello Venus',);

my $hash_name = 'TEXT1';

my $hash_ref = \%$hash_name;
print ${$hash_ref}{1};  #prints nothing
Run Code Online (Sandbox Code Playgroud)

mob*_*mob 5

你的代码工作得很好*

%TEXT = (1 => abc, 42 => def);
$name = 'TEXT';
print ref($name);         #  ""
no strict 'refs';
print ${$name}{1};        #  "abc"
print $name->{42}         #  "def"
$ref = \%$name;
print ref($ref);          #  "HASH"
print $ref->{1};          #  "abc"
print ${$ref}{42};        #  "def"
Run Code Online (Sandbox Code Playgroud)

你做错的主要是使你的代码变得难以维护,这就是为什么不允许这样的事情use strict 'refs'.

* - 除非你在跑步use strict 'refs',你应该是