0
他のすべての呼び出しに似たデータに失敗する前に60K回使用されるコードがあります。 「ハッシュリファレンスではない」というメッセージが表示されます。コードは次のようになります。コードが例外を見逆参照の後でもPerlハッシュリファレンスでエラーが発生する
sub getRowKey
{
my ($self,$row) = @_;
my @keys = split(/,/,$self->{_key});
my $rowkey = "";
confess "Not a non-reference" if (! defined(ref($row)));
confess "no keys found". Dumper($row) if(scalar(@keys) == 0);
foreach my $k (@keys)
{
try
{
$rowkey .= "," if $rowkey ne "";
$rowkey .= $row->{$k};
}
catch Error with
{
$ex = shift;
print "rowkey = '$rowkey' k = '$k'\n";
print Dumper($ex);
print Dumper($row);
confess "Exception: " . $ex->{-text};
}
;
}
return $rowkey;
}
:
rowkey = '' k = 'TopicId'
$VAR1 = bless({
'-file' => 'baseDB.pm',
'-text' => 'Not a HASH reference',
'-line' => '95',
'-package' => 'Error'
}, 'Error::Simple');
$VAR1 = \{ ## note this is a a reference!
'LastReplyId' => 8563,
'LastPostDate' => '2006-06-21 13:37:48',
'TopicId' => '8563', ## note this is they name/value pair to be accessed
'LastTopicDate' => '2000',
'LastReplyDate' => '2006-06-21 13:37:48',
'ForumId' => '84',
'LastPostData' => '...'
}
はあなたの助けと提案いただきありがとうございます:私は次の出力を取得します。
ありがとうございました。参考文献への参照を示すきれいな説明。コードが60K回呼ばれたと言ったとき、間違っていました。多相クラスから60K回呼ばれていましたが、現在ルーチンを使用していたクラスによって生成された参照への参照がありませんでした。 –