http://blog.sina.com.cn/s/blog_6436b8ec0100pu6a.html
#!/use/bin/perl
use strict;
sub changehash{
}
my %hash = (fish=>'shark',bird=>'robin');
changehash(%hash);
foreach my $newk (sort keys %hash){
}
在上面的例子中,当按正常情况传递哈希结构时,@_取得原始哈希结构%hash中每个关键字值对的各个值。在子例程changehash()中,现在放入@_中的哈希结构的各个元素被拷贝到称为%localhash的新哈希结构中。哈希%localhash被修改,该子例程返回。当子例程返回后,%localhash就被撤消,而程序的主要部分中的%hash则保持不变。
在下面这个例子中,对%hash的引用通过@_被传递到子例程changehash()中。该引用被拷贝到标量$href中,它仍然指原始哈希%hash。在子例程中, $hash指向的哈希结构被修改,子例程返回。changehash()返回后,原始哈希结构%hash将包含新关键字bear。
----------------------------------------------------------------------------------------------------
#!/use/bin/perl
use strict;
sub changehash{
}
my %hash = (fish=>'shark',bird=>'robin');
changehash(\%hash);
foreach my $k (sort keys %hash){
}
这个样子的
#!/usr/bin/perl
my %hash = (
a => 1,
b => 2,
c => 3,
);
sub print_hash {
my %hash = (@_); # @_ 处括号可有可无
foreach $key (keys %hash){
print "key is $key,value is $hash{$key}\n";
}
}
sub print_hash_2 {
my ($hash) = @_; # ($hash) 处括号必须有,取得原先 %hash 地址
my %hash = %$hash;
foreach $key (keys %hash){
print "The key is $key,the value is $hash{$key}\n";
}
}
&print_hash(%hash); #直接调用 %hash
print "\n\n";
&print_hash_2(\%hash); #调用 %hash 地址