2011-06-07 56 views
19

我正在開發腳本,即重複使用一些非常老的perl代碼。Perl:不推薦使用散列作爲參考

這一行給我仍然錯誤使用散列作爲參考已被棄用。

%hash->{$_[$counter]} = $_[$counter+1]; 

如何重構此代碼,以便我不會收到錯誤。

+8

知道Perl的診斷信息記錄在perldiag中也很有用,它可以在這裏訪問(http://perldoc.perl.org/perldiag.html)或直接在命令行('perldoc perldiag') 。 – FMc 2011-06-07 13:27:42

+3

該警告是該行不符合記錄的結果。 ' - >'的LHS應該是一個引用,它是一個標量,而標量上下文中的'%hash'不應該返回對自身的引用。 – ikegami 2011-06-07 17:34:33

回答

25

嘗試

$hash{$_[$counter]} = $_[$counter+1]; 
17

什麼是的->{左邊應該是一個散列引用,而不是一個哈希值。如果你有散列,可以省略->,並且只是說$hash{

迂腐,%hash->{...}應該做些什麼呢(my $temp=%hash)->{...}:獲得哈希%的標值(例如「1/8」,表明使用8 1桶),並把它作爲一個象徵性的散列引用(與失敗下的使用錯誤嚴格的「參考」)。但由於意外,它被安靜地重新解釋爲$hash{...}。 這個錯誤將在某天被修復,但同時會有人提醒他們更改錯誤的代碼。

相關問題