-2

XML::TWIG を使用して巨大なテキスト XML ファイルを解析しています。後で SQL データベースにフィードできるように、データを標準の CSV に変換する必要があります。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};

defined-or 演算子を簡単な解決策として使用できます。

print $hash{aKeyWhichWasNotDefined} // '';

existsまた、definedハッシュキーを確認することもできます。

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+ では、 defined-or 演算子を使用できます:

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

以前の Perl では、難しい方法で行います:

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