有人可以解释该参考函数如何与此Perl子例程一起工作吗?

时间:2019-04-29 17:54:24

标签: 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 { [
     ]
     }
    }

1 个答案:

答案 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 []