1.使用哈希引用
my $hash = {}; #定义一个空的匿名哈希作为哈希引用的初始化
2.哈希赋值
a.给字符串赋值
$hash->{a} = 'x';
b.给数组赋值
@array = (1, 2, 3);
foreach (@array)
{
push @{$hash->{b}} = $_;
}
c.给哈希赋值
$hash->{c}{d} = 'y';
3.输出哈希
1.如果我们想输出$hash->{a}的值,可以用
my ($key, $value) = each %{$hash};
print "key = $key. /n";
print "value = $value. /n";
2.如果我们需要输出$hash->{b}的值,
调用 my ($key, $value) = each %{$hash};后
这时的$value是一个数组,我们需要循环输出数组的值
这里有三种方法
a.
for $key ( keys %{$hash})
{
print "$key => @{$hash->{$key}}";
}
b.打印时追加数组索引
for my $key (keys %{$hash}) { print "$key :"; #print "$key => @{$hash->{$key}} /n";
for $i (0 .. $#{$hash->{$key}}) { print "$i = $hash->{$key}[$i] "; } print "/n"; }
c.
while ( my($keys, $values) = each %{$hash} )
{
print "$keys = @{$value} /n";
}
注意:这里的循环中的赋值都是属于引用赋值,所以在取值的时候都需要解引用。 如@{$hash->{$key}}和@{$value}
3.如果我们需要输出$hash->{c}{d}的值,
调用 my ($key, $value) = each %{$hash};后
这时的$value是另一个哈希表,我们就需要再次用
my ($keytmp, $valuetmp) = each %{$value};
print "key = $keytmp. /n";
print "value = $valuetmp. /n";
那么打印哈希的哈希,可以用
while ( my($keys, $values) = each %{$hash})
{
print "$keys :";
while ( my($key, $value) = each %{$values})
{
print "$key = $value";
}
print "/n";
}
