-2

我正在用 XML::TWIG 解析一个巨大的文本 XML 文件。我必须将数据转换为标准 CSV,以便以后可以将其输入 SQL 数据库。XML 输入文件包含几个客户的数据。一些客户将拥有比其他客户更多的数据(更多标签)。所以我一直将所有数据放入哈希中,以便我可以区分哈希中的标签。

我为每个客户重置哈希。现在,由于任何客户都可以有额外的标签,当我尝试打印未定义的键的哈希时,它会给出错误:

Can't use an undefined value as a symbol reference at xml.pl at line 129

示例代码是

print $hash(aKeyWhichWasNotDefined);

如果哈希键在哈希中不存在,是否有打印出一个空字符串?

4

2 回答 2

4

首先,正确的语法是:

$hash{aKeyWhichWasNotDefined};

您可以使用定义或运算符作为快速解决方案:

print $hash{aKeyWhichWasNotDefined} // '';

existsdefined可以让您检查哈希键。

if (exists $hash{key}) { print "key exists but the value could be undefined" }
if (defined $hash{key}) { print "key exists and has a defined value" }
于 2013-03-01T13:16:13.360 回答
3

获取哈希值的正确方法是

print $hash{aKeyWhichWasNotDefined};

也就是说,使用{(大括号)而不是((括号)。

如果您打印未初始化的值,您仍然会收到警告。在 Perl 5.10+ 上,您可以使用定义或运算符:

print $hash{'non-existent-key'} // '';

在较早的 Perls 上,很难做到:

print defined $hash{'non-existent-key'} ? $hash{'non-existent-key'} : '';
于 2013-03-01T13:15:54.277 回答