@_和$_的问题

z5253882 2016-10-25 10:30:39
#!/usr/bin/perl -w
my @names = qw /petty ali amily alice /;
print "@names\n";
change(@names);
print @names;

sub change
{
my(@source) = @_;
print "\@_:@_\n";
print "\$_:$_\n";
# $_[1]="hello world";
# @_[1]="hello world";
}


被注释掉的两行如果,如果调用@_[1]=...,就会出现Scalar value @_[1] better written as $_[1] at ./a.pl line 13.
如果调用$_[1]=...,之前调用print "\$_:$_\n"会有提示Use of uninitialized value $_ in concatenation (.) or string at ./a.pl line 11.,$_的值输出是空。但是结果确又确实是修改了,不知道这个是如何处理的。
...全文
453 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fibbery 2016-12-16
  • 打赏
  • 举报
回复

sub change 
{
    my(@source) = @_;
    print "\@_:@_\n";
    print "\$_:$_\n";
#    $_[1]="hello world";
#    @_[1]="hello world";
}
在函数中,变量@_是函数传入的参数数组,当函数被调用时传入了参数,那么@_中有元素; $_是一个变量,在此处并没有初始化,当然,如果你使用$_[0]的方式,是在访问@_数组的第一个元素。 @_[1]=...,提示已经说得很清楚,最好使用$_[1]的形式访问数组的第二的元素。

37,737

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧