我是新来的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。把它全部写出来(如上面的第二个例子),在你的心里加强实际上发生了什么。就像你在学习外语时,你应该学会正确和仔细地说话,然后才能学会使用外语。 $ _对于编写更短,更简洁的代码非常有用,并且通过关注进行的处理而不是正在进行的变量实际上更清楚,但只有当你学习为第二本质,哪些操作使用$ _。否则只是一个混乱的混乱。
如别处所述,@_是子例程的参数列表。