簡體   English   中英

Perl:如何在關鍵“引用鍵上獲取鍵是實驗性的”

[英]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的東西:

Perl拋出“引用上的鍵是實驗性的”

但我不知道如何在我的情況下應用它。

如何在不拋出此錯誤的情況下獲取多個鍵控哈希的鍵?

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 }

參考:

https://www.perl.com/pub/2005/07/14/bestpractices.html/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM