perl - 如何在 Perl 中的函数调用中将哈希扩展为参数列表?

标签 perl syntax

如何在 Perl 中的函数调用中将哈希扩展为参数列表?我正在搜索 Python 语法的 Perl 等效项:somefunc(**somedict)somefunc(*somelist)。这在 Perl 中可能吗?

最佳答案

在 Perl 中,所有函数参数都作为列表传递并存储在特殊数组变量 @_ 中。您可以将这些值复制到其他数组,或直接复制到散列中(就像使用任何数组/列表一样)。

如果您正在编写函数,则可以将参数直接传递到数组或散列中:

sub hashFunc {
    my %args = @_;

    ....
}

sub arrayFunc {
    my @args = @_;

    ...
}

要调用这样的函数,只需将它们传递为列表或散列即可:

hashFunc(arg1 => 'someVal', arg2 => 'someOtherVal');
arrayFunc('someVal', 'someOtherVal');

如果变量中已经有参数,只需传递它们,Perl 将数组/散列压平到参数列表中:

hashFunc(%someHash);
arrayFunc(@someArray);

关于perl - 如何在 Perl 中的函数调用中将哈希扩展为参数列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7557061/

相关文章:

perlbrew:在本地安装 perl 模块

windows - Perl 5.20.1版本下载。如何设置路径?

regex - 有没有办法在 Perl 中重载正则表达式绑定(bind)运算符 `=~`?

perl - 使用 Parallel::ForkManager 处理文件

scala - 在 Scala 中将函数参数定义为 "var"?

php - 编辑nmap2db.pl(更改数据库更新语句)

syntax - Octave 中变量前面的@符号的目的是什么?

generics - 实现不只是 impl Foo<T> 是否有技术原因?

syntax - Lisp : how to use recursion to defun a function that given a nonnegative integer N, 生成从 1 到并包括 N 的所有整数的列表?

perl - perl(语法错误)-全局符号 “@arr1”需要明确的软件包名称