PFMブロックを置き換えて誰でもこの印刷を "4"にすることはできますか?ハッシュ要素のプログラムによるアクセス
my %hash;
$hash{1}{2}{3}=4;
my @key=qw(1 2 3);
my $key;
for(@key){PFM}
print $hash{$key}
PFMブロックを置き換えて誰でもこの印刷を "4"にすることはできますか?ハッシュ要素のプログラムによるアクセス
my %hash;
$hash{1}{2}{3}=4;
my @key=qw(1 2 3);
my $key;
for(@key){PFM}
print $hash{$key}
my %hash;
$hash{1}{2}{3}=4;
my @key=qw(1 2 3);
my $data = \%hash;
for(@key){
$data = $data->{$_}
}
print $data
それは私が行方不明だった!私の$データ= \%ハッシュ;全部の鍵だった。優れた仕事! – Hawk
my $val = \%hash;
$val //= $val->{$_} for @key;
say $val;
か、キーのいずれかの部分が存在しない場合はどちらのバージョンが何かをvivifyますData::Diver
use Data::Diver qw(Dive);
say Dive(\%hash, @key);
を使用することができます。
my $p = \\%hash;
$p = \($$p->{$_}) for @key;
$$p = 5;
または
use Data::Diver qw(DiveRef);
my $ref = DiveRef(\%hash, map \$_, @key);
$$ref = 5;
または
use Data::Diver qw(DiveVal);
DiveVal(\%hash, map \$_, @key) = 5;
(
map \$_,
は、データを作るために必要とされて:あなたは、このようなキーを使用して値を設定したい場合は
::ダイバーはarraの代わりにハッシュを作るys)。
これは非常に興味深く便利です。私もこれを投票しました。ありがとう! – Hawk
はい。しかし、それはあなたが何を望むか、おそらくではありません。
$key = "X";
$hash{X} = 4;
4はもともと%のハッシュの値ではありません。
my @fours = grep $_ == 4, values %hash;
print "[@fours]\n"; # prints '[]'
番号$キーを使用すると、印刷に着くまでにはundefの値を持っているのでステートメント。 – tadmc
いいえ。%hashから値を取得しようとしていないためです。 (@tadmcが言ったことは意味がありません.PPMは '$ key'をundef以外のものに設定することができます) – ikegami
SOのコメントをどうやって削除しますか? – tadmc