这是我正在使用的代码片段:
my %photo_details = (
'black_cat' => (
('size' => '1600x1200', 'position' => -25),
('size' => '1280x1024', 'position' => 25),
('size' => '800x600', 'position' => 0),
),
'race_car' => (
('size' => '1600x1200', 'position' => 10),
('size' => '800x600', 'position' => 5),
),
);
my $photo = 'black_cat';
foreach my $photo_detail ($photo_details{$photo})
{
my $size = $photo_detail{'size'};
my $position = $photo_detail{'position'};
print ("size = $size, position = $position\n");
}
我期望得到的是:
大小 = 1600x1200,位置 = -25
大小 = 1280x1024,位置 = 25
大小 = 800x600,位置 = 0
我得到的是:
在 C:\Test.pl 第 23 行的连接 (.) 或字符串中使用未初始化的值 $size。
在 C:\Test.pl 第 23 行的连接 (.) 或字符串中使用未初始化的值 $position。
大小 = , 位置 =
foreach 语句显然是错误的,因为不仅没有 $size 和 $position 的值,而且它只经历了一次循环而不是三次。我已经尝试了各种变量前缀的变体,但都没有找到。
我究竟做错了什么?