理解Perl中的引用
发布时间:2020-12-15 23:27:29 所属栏目:大数据 来源:网络整理
导读:我正在尝试理解Perl中的引用教程 perldoc perlreftut 到目前为止,使用下面的代码,我正在初始化一个空哈希 my %table 这是整个计划 #!/usr/bin/perl -w use strict;my %table;while (DATA) {chomp;my ($city,$country) = split /,/;#$table{$country} = [] un
我正在尝试理解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; 解决方法
你是
declaring哈希%表.声明是告诉Perl有一个词法范围的变量.初始化是指您第一次为变量赋值.你没有
initialize它,所以Perl提出了一个默认值.因为它是一个哈希值,所以它以一个空列表()开头,该列表为false.
你在这一行中有一个解引用运算符. push @{$table{$country}},$city; 它将值$table {$country}作为数组引用,取消引用它,然后将$city推入该数组.有一个名为auto-vivification的功能可在推送值之前自动创建必要的数组引用. 因此,在输入的第一轮之后,您现在拥有以下数据结构: %table = ( 'USA' => [ 'Chicago' ] ) %table是一个哈希值,但该哈希中的关键USA包含一个数组引用. 要在Perl中创建多级数据结构,需要参考.但第一级不需要作为参考.它可以是散列或数组. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |