在Perl中,可以隐式地将隐式变量传递给一些内置函数,如:
$_ = 'foo';
print; # prints foo
是否可以为我的sub定义此类行为?像这样:
sub bar {
print $_[0];
}
$_ = 'foo';
&bar; # does not work
提前致谢。
答案 0 :(得分:2)
$_[0]
是@_
数组的第一个元素,用于获取传递给子例程的值。 $_
用作全局隐式变量
sub bar {
my ($arg) = (@_, $_);
print $arg;
}
local $_ = 'foo';
bar();
bar("explicit foo");
答案 1 :(得分:0)
单一论点:
sub bar {
my $arg = @_ ? shift : $_;
...
}
单个参数(5.10 +):
sub bar(_) {
my $arg = shift;
...
}
多个参数:
sub bar {
my @args = @_ ? @_ : $_;
...
}
多个参数(5.10 +):
sub bar(_@) {
my @args = @_;
...
}