Ani*_*han 2 perl reference parameter-passing
我有以下子例程。
sub Function{
my $ref = \($_[0]);
if(ref($ref) eq 'SCALAR'){
. . .
}
}
Run Code Online (Sandbox Code Playgroud)
我试图让它工作,以便将列表、标量或散列传递给它,它将其转换为引用,并根据该引用的类型是否为ARRAY或SCALAR,HASH执行不同的操作。
它可以被称为
Function(%a)
Function($a)
Function(@a)
Run Code Online (Sandbox Code Playgroud)
我如何才能$ref引用传递给 的任何内容Function?我目前的方法不起作用。
Function(%a)
Function($a)
Function(@a)
Run Code Online (Sandbox Code Playgroud)
你不能做你所要求的。内部无法Function确定是否传递了数组或散列,因为事实上,您一开始就无法将数组或散列传递给子函数。你只能传递一个列表;哈希值和数组在上面的子调用中转换为列表。
您应该首先传递对该函数的引用:
Function(\%a)
Function($a)
Function(\@a)
Run Code Online (Sandbox Code Playgroud)
然后你可以轻松检查它是什么:
sub Function {
my $param = shift;
if (not ref $param) {
...
} elsif (ref $param eq 'HASH') {
...
} elsif (ref $param eq 'ARRAY') {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |