コードにuninitialized value in string eq at *** line xxx
警告が表示されますが、実際にその行にある場合は簡単に修正できますeq
。
ただし、hashref内の値には正規表現の一致があります。
if ($hashref->{parameters}->{type} =~ m/:/) {
この前のいくつかの行私はこれさえ持っています:
$hashref->{parameters} = defined($hashref->{parameters}) ? $hashref->{parameters} : '';
$hashref->{parameters}->{type} = defined($hashref->{parameters}->{type}) ? $hashref->{parameters}->{type} : '';
したがって、値は少なくとも初期化する必要があります。
私は自分自身とあなたに尋ねています:なぜ私はまだ値が初期化されていないという警告を受け取るのですか、さらになぜそれはeq
代わりに言うのですか?pattern match
編集:
parameters
サブハッシュには、URL入力(postおよび/またはget)を介して指定されたすべての変数が含まれます。値は、URLに含まれる可能性type
のある変数の1つです。値がURLに含まれているかどうかは関係ありません。値が含まれている場合は、常に警告が表示されます。バグのある行の前に警告して行を入力する値を制御しても。type
uninitialized value in string eq
2.編集:
@ikegamiが想定したように、実際elsif
に警告の原因となったものがあります
if-elsifステートメント全体は次のようになります。
if ($hashref->{parameters}->{type} =~ m/:/) {
…
elsif ($hashref->{parameters}->{type} eq $somevalue) {
…
}
それは初期化され$somevalue
ていませんでした。