我有以下的(從錯誤理想化的)短Perl腳本:爲什麼我的哈希不是undef?
my %metadata = undef;
if (defined %metadata)
{
print "defined";
}
出於某種原因,該程序的輸出總是「定義」。因此,將哈希設置爲「未定義」會以某種方式使其定義。它被定義爲「未定義」嗎?
編輯:
這是一種理想化的情況下,企圖複製的問題。什麼我實際上做的更像是:
my %metadata = my_sub_function();
if (defined %metadata)
{
print "defined";
}
凡my_sub_function的輸出可能是民主基金,()或填充亂碼,我只希望在最後的這些情況下打印「定義」。
編輯2:
順便說一句我發現
if (scalar(keys %metadata)
行爲正確的(),但仍然不是民主基金。
不'my_sub_function'做了'回undef'給我ndicate失敗或沒有數據?如果是這樣,它可能應該做一個簡單的'返回'而不是。這將被解釋爲標量上下文中的「undef」和列表上下文中的「()」(空列表)。 – 2010-10-18 13:13:23