有人可以解释这个参考函数如何与这个 perl 子例程一起工作吗?
can someone explain how this reference function work with this perl subroutine?
这是我无法理解的子例程,我试图传递一些数组和散列作为参数但无法弄清楚
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 { [
]
}
}
第一个参数应该是对哈希的引用。
第二个参数是引用哈希的一个元素的键。
如果元素的值是对数组的引用,则返回该引用。
my @a = ...;
my %h = { key => \@a };
List(\%h, 'key') # Returns \@a
如果元素的值是对散列的引用,则返回对包含该散列引用的数组的引用。
my %inner = ...;
my %h = { key => \%inner };
List(\%h, 'key') # Returns [ \%inner ]
否则,returns 对空散列的引用
my %h = { };
List(\%h, 'key') # Returns []
这是我无法理解的子例程,我试图传递一些数组和散列作为参数但无法弄清楚
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 { [
]
}
}
第一个参数应该是对哈希的引用。
第二个参数是引用哈希的一个元素的键。
如果元素的值是对数组的引用,则返回该引用。
my @a = ...;
my %h = { key => \@a };
List(\%h, 'key') # Returns \@a
如果元素的值是对散列的引用,则返回对包含该散列引用的数组的引用。
my %inner = ...;
my %h = { key => \%inner };
List(\%h, 'key') # Returns [ \%inner ]
否则,returns 对空散列的引用
my %h = { };
List(\%h, 'key') # Returns []