我有以下的(从错误理想化的)短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