我正在研究一些示例代码,我试图弄清楚为什么它与$ args周围的括号一起工作.没有它,我没有得到价值.
sub random_dice{
my ($args) = @_;
my $number_of_rolls = $args->{number_of_rolls} || 6;
...
}
# I don't understand why it works with the brackets around $args
my $r = random_dice({number_of_rolls=>5});
Run Code Online (Sandbox Code Playgroud)
它的工作原理是因为您将匿名哈希传递给random_dice子例程.
my ($args) = @_; # sets $args as element of @_. Not as an array
Run Code Online (Sandbox Code Playgroud)
$ args现在是对哈希的引用
$args = {
number_of_rolls => 5
};
Run Code Online (Sandbox Code Playgroud)
这通常用作在Perl中具有命名参数的方法