我是新来的Perl,我用他们这样
$ _
foreach (@list) { print "$_\n"; }
@_
sub search { my ($no,@list) = @_; }
这些下划线变量在Perl中如何工作?它们有用的其他结构是什么?
解决方法
这是一个问题,这表明你真的应该读一本书,也许其余的perl标签
faqs。
然而,$ _是一个上下文变量,它由某些构造隐式创建,并由某些内置函数隐式使用。这里有些例子:
while(<>) { next if /^#/; last if /^q(?:uit)?$/; say "Howdy!" if /^hello$/; }
这做了很多工作设置和检查$ _变量,并等效于:
while(defined($_ = <>)) { next if $_ =~ /^#/; last if $_ =~ /^q(?:uit)?$/; say "Howdy!" if $_ =~ /^hello$/; }
设置$ _的其他构造是:foreach循环,给定块,map和grep操作,以及在Try::Tiny中捕获块。
使用$ _的其他构造是:裸印;语句,s ///替换运算符和tr ///音译运算符。
我建议这样:当你正在学习Perl,不要使用$ _ implicitly。把它全部写出来(如上面的第二个例子),在你的心里加强实际上发生了什么。就像你在学习外语时,你应该学会正确和仔细地说话,然后才能学会使用外语。 $ _对于编写更短,更简洁的代码非常有用,并且通过关注进行的处理而不是正在进行的变量实际上更清楚,但只有当你学习为第二本质,哪些操作使用$ _。否则只是一个混乱的混乱。
如别处所述,@_是子例程的参数列表。