分享

科学网

 aixuexidewau1 2019-08-26

1.@_含义

1)是perl中默认的数组变量

比如说你想移除数组中的一个元素赋值给一个变value1@abcdmyvalue=shift @abcd;

方法2:你没有定义任何数组
       my $value=shift @_;   和上例等效
       这里perl会隐式的选择@_

2)是sub子函数中的默认参数列表.

例如:
sub funct($$) {
    ($param1, $param2) = @_;
    #Statement
}

再例如,有下面一段代码:
my max_number = &max(1,2); print "1 and 2 ,the max number ismax_number\n";
sub max{
     my (num1,num2) = @_[0,1]; ## 取出参数列表中的元素。
     ........此处省略求max运算
}

在子函数中直接shift; 就可以从@_的前端弹出一个元素.

shift;
等于
shift @_;

-------------------------

@_ is the list of incoming parameters to a sub. So if you write a sub, you refer to the first parameter in it as $_[0], the second parameter as $_[1] and so on. And you can refer to $#_ as the index number of the last parameter:
sub demo {
  print "Called with ",#_+1," params\n";   print "First param was_[0]\n";

Note that the English module adds in the ability to refer to the special variables by other longer, but easier to remember, names such as @ARG for @_ and PIDfor$. But use English; can have a detrimental performance effect if you're matching regular expressions against long incoming strings

2.$_含义

1)print;print_;
2)默认模式匹配空间(pattern matching space)
s/.../.../;
等于
$_ =~ s/.../.../;

---------------------------

Then any regular expression matches, chops (and lcs and many more) without a parameter, and even prints assume you want to work on .Thus:while(line = <FH>) {
  if (line= /Perl/)printFHO$line;printucline;
  }

Shortens to:
while (<FH>) {
  /Perl/ and
    print FHO ;
  print uc;
  }
3.1,2,...等含义

以数字为名的变量保存的是上一次匹配操作(/pattern/)中,第n个小括号中的原符号所匹配内容。  
12就是第二对小括号中的原符号所对应的匹配内容。

内插功能:  

str="aaa4zzz7bbb";str   =~ /(\d)z{3}(\d)/;  
print   "1\t2n";  

输出结果是:4     7  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多