有人可以解释这个参考函数如何与这个 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 []