这是我无法理解的子例程,我试图将一些数组和哈希作为参数传递,但无法弄清楚
sub List {
my $value = shift;
my $key = shift;
if (ref($value->{$key}) eq ARRAY) {
$value->{$key}
}
elsif (ref($value->{$key}) eq HASH) {
[$value->{$key}]
}
else { [
]
}
}
答案 0 :(得分:3)
第一个参数应该是对哈希的引用。
第二个参数是所引用哈希的元素的键。
如果元素的值是对数组的引用,则返回该引用。
my @a = ...;
my %h = { key => \@a };
List(\%h, 'key') # Returns \@a
如果元素的值是对哈希的引用,则返回对包含该哈希引用的数组的引用。
my %inner = ...;
my %h = { key => \%inner };
List(\%h, 'key') # Returns [ \%inner ]
否则,返回对空哈希的引用
my %h = { };
List(\%h, 'key') # Returns []