[英]Perl: How to get keys on key “keys on reference is experimental”
我正在尋找Perl警告的解決方案
“參考的關鍵是實驗性的”
我從這樣的代碼得到這個:
foreach my $f (keys($normal{$nuc}{$e})) {#x, y, and z
我在這里找到了類似StackOverflow的東西:
但我不知道如何在我的情況下應用它。
如何在不拋出此錯誤的情況下獲取多個鍵控哈希的鍵?
keys %{$normal{$nuc}{$e}}
例如,首先取消引用它。
如果你有一個開頭的參考,你不需要{}
例如:
my $ref = $normal{$nuc}{$e};
print keys %$ref;
問題是$normal{$nuc}{$e}
是一個哈希引用 , keys
正式只接受哈希。 解決方案很簡單 - 您必須取消引用該引用 - 您可以通過編寫來解決這個問題
for my $f ( keys %{ $normal{$nuc}{$e} } ) { ... }
但是將哈希引用提取到中間變量中可能更明智。 這將使您的代碼更加清晰,就像這樣
my $hr = $normal{$nuc}{$e};
for my $f ( keys %$hr ) { ... }
我鼓勵你寫出更有意義的變量名。 $f
和$e
可能會在你寫這篇文章的時候告訴你很多,但它肯定會引起別人的問題,甚至可能會回來打你一兩年了
同樣,我確信有一個比$hr
更好的標識符,但我不知道你的數據結構的各個級別的含義 ,所以我不能做得更好。 請將其稱為與其指向的數據相關的內容
keys $hash_ref
是引用警告鍵是實驗性的原因
解:
keys %{ $hash_ref }
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.