if((scalar keys ($this->{'libraries'}->{$y}->{'cellHash'})) == 0){
這是我得到「引用鍵的參數類型必須是未散列hashref或arrayref」錯誤的行。你能幫我解決這個問題嗎? 我不明顯的原因發佈代碼。引用鍵參數的類型必須是未散列的hashref或arrayref
if((scalar keys ($this->{'libraries'}->{$y}->{'cellHash'})) == 0){
這是我得到「引用鍵的參數類型必須是未散列hashref或arrayref」錯誤的行。你能幫我解決這個問題嗎? 我不明顯的原因發佈代碼。引用鍵參數的類型必須是未散列的hashref或arrayref
keys
作爲參考的新功能在設計上被打破。 Perl的開發團隊無法弄清楚它應該如何處理一些引用,所以它只適用於某些引用。因此,keys
接受參考的能力記錄爲experimental。無法解決此問題,此「功能」已被刪除5.24。您不應該使用它,因爲當您升級perl
時,您的代碼將停止工作。
你碰到過這種情況,keys
在給出參考時不起作用。改爲提供散列或數組。在這種情況下,你可能想
keys(%{ $this->{'libraries'}->{$y}->{'cellHash'} })
整個事情可以寫成如下:
if (!keys(%{ $this->{libraries}{$y}{cellHash} })) { ... }
%{$本 - > { '圖書館'} - > {$ Y} - > { 'cellHash'}}。我錯過了花括號和%。
您可能無法發佈真正的代碼「出於顯而易見的原因」,但是如何處理一些示例,可運行的虛擬代碼,這些代碼可以顯示您遇到的問題,而無需公開真實代碼的完整上下文? –
@Dave Sherohman,一般的好建議,但是問題已經解釋了,並且在你的評論前兩個小時提出了一個解決方案。您可以通過在OP的代碼之前複製問題:'$ y ='y'; $ this - > {'libraries'} - > {$ y} - > {'cellHash'} = bless({});'。請注意,您必須使用5.14或更高版本來獲取OP得到的錯誤。 – ikegami