我正在尝试理解有关Perl中引用的教程。
perldoc perlreftut
到目前为止,使用下面的代码,我正在初始化一个空哈希表:
my %table
以下是整个程序
#!/usr/bin/perl -w
use strict;
my %table;
while (<DATA>) {
chomp;
my ($city, $country) = split /, /;
#$table{$country} = [] unless exists $table{$country};
push @{$table{$country}}, $city;
print @{$table{$country}};
}
__DATA__
Chicago, USA
Frankfurt, Germany
Berlin, Germany
Washington, USA
Helsinki, Finland
New York, USA
有人能解释一下下面这行代码吗?因为我看到一个引用(我认为是)在这里,但它被初始化为一个哈希表 %table。
push @{$table{$country}}, $city;
%table =('USA'=> [ 'Chicago'])
;$city
是 '芝加哥' 会被推入引用$table{$country}
中,其中@{ $table {$country}}
是数组引用; 如果我错了,请纠正我,是 autovivification 技术将%table
中的内容填充进去的吗? - BioRod%table = ( 'USA' => [ 'Chicago' ] );
。我已经将其添加到我的答案中。///$table{$country}
是数组引用。@{ $table{$country} }
是数组。/// 自动创建是创建引用和数组并将引用放入$table{$country}
的过程。 - ikegami