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 に答える