在Perl中下划线的意义是什么($_,@_)?

前端之家收集整理的这篇文章主要介绍了在Perl中下划线的意义是什么($_,@_)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是新来的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。把它全部写出来(如上面的第二个例子),在你的心里加强实际上发生了什么。就像你在学习外语时,你应该学会正确和仔细地说话,然后才能学会使用外语。 $ _对于编写更短,更简洁的代码非常有用,并且通过关注进行的处理而不是正在进行的变量实际上更清楚,但只有当你学习为第二本质,哪些操作使用$ _。否则只是一个混乱的混乱。

如别处所述,@_是子例程的参数列表。

猜你在找的Perl相关文章