如下面的Perl脚本所示,似乎$_
未作为默认参数传递给列表上下文中的反向。为什么它不接受$ _作为默认参数并执行标量列表转换?两个上下文中函数的默认参数的规则是什么?
我看到了这个post,其中提到@_
应该是以列表模式运行的函数的默认参数(列表反向,排序),但在我之后似乎不是这种情况将@_ = somelist
添加到下面的代码段中。
$_ = "dlrow ,olleH";
print reverse; # No output, list context
print scalar reverse; # Hello, world
答案 0 :(得分:2)
$_
将是一个奇怪的默认值,因为它实际上不会执行任何操作:
$_ = "dlrow ,olleH";
print reverse $_; # outputs: dlrow ,olleH
我不知道“scalar to list conversion”是什么意思。
对于函数的默认参数没有通用规则,就像列表与标量上下文中的函数没有一般规则一样;你必须参考每个功能的文档。