純粋にアカデミックな質問であり、ここでそれらを禁止する指示は表示されません(ただし、「アカデミック」のようなタグは見つかりませんでした)。
次のような既存のハッシュがある場合は、次のようにスライス(?)を取得できます。
my %hash = (one=>1, two=>2, three=>3, four=>4);
my ($two, $four) = @hash{'two','four'};
このようなサンプル関数からハッシュが返される場合、これを行う方法はありますか?
sub get_number_text
{
my %hash = (one=>1, two=>2, three=>3, four=>4);
return %hash;
}
動作する1つの方法は次のとおりです。
my ($two, $four) = @{ { get_number_text() } }{'two', 'four'};
私が理解しているように、関数はハッシュキー/値のリストを返し、内部の{}は匿名のハッシュ/参照を作成し、@ {}は参照を使用して、Perlが参照を知っているため、ハッシュスライスとも呼ばれるリストに「キャスト」します。ハッシュです。(最後のビットが機能したことに少し驚いたが、Perlなどにより多くのパワーがあった)
しかし、それは確かに奇妙なアクセスを1つの表現で書くための最も明確な方法ですか?