我有一个对象$burStageStats
,其中充满了数据。
my $additional_event_details = {
'status' => '\N',
'duration' => '\N',
'keyword' => $keyword
};
my $statsHash = {
'time' => '\N',
'event_type' => 'INFO',
'backup_stage' => '\N',
'additional_event_details' => $additional_event_details
};
push (@burStageStats, $statsHash);
稍后我循环浏览并将这些值打印到BCP文件
foreach my $backup (@{$burStageStats}) {
foreach my $backupStage ($backup) {
print BCP "$siteId\t" . $backupStage->{'time'} . "\t" .
$backupStage->{'event_type'} . "\t" .
$stageIdMap->{$backupStage->{'additional_event_details'}->{'backup_stage'}} . "\n";
}
}
我收到以下错误
在/ data / ddp / current / analysis / TOR / bur / parseburLog第180行,第11287行中,在串联(。)或字符串中使用未初始化的值。
我想指出了我在行中引用的方式
$stageIdMap->{$backupStage->{'additional_event_details'}->{'backup_stage'}} . "\t" .
但是我不确定如何正确地写那行。该代码有效,但我希望报告的错误明显更少。
答案 0 :(得分:2)
警告告诉我们,$backupStage->{'additional_event_details'}->{'backup_stage'}
返回的值在$stageIdMap
引用的哈希中不存在。例如,如果$backupStage->{'additional_event_details'}->{'backup_stage'}
为'foo',则$stageIdMap->{'foo'}
丢失或未定义。
鉴于问题顶部的示例数据,我注意到该示例数据中不存在$backupStage->{'additional_event_details'}->{'backup_stage'}
-$additional_event_details
哈希不包含backup_stage
键。 backup_stage
位于$statsHash
中,而不是$backupStage->{'additional_event_details'}
中。这似乎可能是根本问题,因为很有可能$stageIdMap->{undef}
(对于实际的undef
,而不是字符串'undef')不存在。
如果您要提供一个简短的,自成体系的示例程序,我们可以亲自运行该程序以查看实际问题,那么我们将能够提供更多确定的(也许更有用的)帮助。