1

我想使用用户的输入来选择要操作的哈希。目前,我有这个繁琐的代码:

my ( %hash1, %hash2 );
print "Which hash to work with (1 or 2)? ";
my $which = <>;
chomp $which;
&do_something( %hash1 ) if $which == 1;
&do_something( %hash2 ) if $which == 2;

有没有更优雅的方法来做到这一点?我正在考虑使用%{"hash$which"},但这似乎不起作用。我认为

$which = "hash" . chomp $which;
&do_something( %{"$which"} );

会起作用,但这是最好的方法吗?

感谢您的帮助,尤其是因为这是我的第一篇 SO 帖子。

4

2 回答 2

3

为什么使用变量作为变量名是愚蠢的

你要

my @hashes;
print "Which hash to work with (1 or 2)? ";
my $which = <>;
chomp $which;
do_something( %{ $hashes[$which] } );

以防万一您不知道,请始终使用use strict; use warnings;.

于 2013-05-14T19:25:25.760 回答
1

您正在寻找的东西在 perl 世界中被称为“符号引用”。强烈 建议不要使用符号引用。

为什么不添加另一个间接级别?

my $hash = {
    user_opt1 => {
        foo => 'bar',
    },
    user_opt2 => {
        foo => 'baz',
    },
};
于 2013-05-14T19:28:42.250 回答