免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1541 | 回复: 4
打印 上一主题 下一主题

怎么理解这两个$_的不同之处 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-03 11:30 |只看该作者 |倒序浏览
这是perl编程金典里的一个例子,我改了一下,因为没有理解里面的2个$_的区别。

哪位高手路过了,指点下.
--------------------------------------------------------------------------------------
#!/usr/bin/perl
# Fig 6.5: fig06_05.pl
# Demonstrating a subroutine that receives arguments.

displayArguments( "Sam", "Jones", 2, 15, 73, 2.79 );

# output the subroutine arguments using special variable @_
sub displayArguments
{
   # the following statement displays all the arguments
   print "All arguments: @_\n";

   # the following loop displays each individual argument
   for ( $i = 0; $i < @_; ++$i ) {
      print "Argument $i: $_[ $i ]\n";  #这里没理解。$_不是取自@_的一个元素么?怎么又带了下标? 变成了数组的引用方法了?
   }
# 下面这个for循环是我加的。
   $i = 0;
   for(@_) {
      print "\$_ is: $_\n";    #直接打印@_中的每个元素。
      print "\$_[$i] is: $_[$i]\n"; #和上面一行的方法的对比。但不知道怎么理解这2个之间的不同之处。
      ++$i;
   }

}
-----------------------------------------------
输出如下:
[root@cent perl]# ./t
All arguments: Sam Jones 2 15 73 2.79
Argument 0: Sam
Argument 1: Jones
Argument 2: 2
Argument 3: 15
Argument 4: 73
Argument 5: 2.79
$_ is: Sam
$_[0] is: Sam
$_ is: Jones
$_[1] is: Jones
$_ is: 2
$_[2] is: 2
$_ is: 15
$_[3] is: 15
$_ is: 73
$_[4] is: 73
$_ is: 2.79
$_[5] is: 2.79
[root@cent perl]#
----------------------------------------------------------------

[ 本帖最后由 yszll 于 2007-1-3 11:40 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-01-03 11:59 |只看该作者
$_跟@_没有任何关系, 它们看上去很相似, 仅仅是巧合!
$_[index] 是 取@_里的元素, 而$_还是$_

就像$a和@a一样, 它们是属于不同的命名空间的
你可以定义一个$a, 同时也可以定义@a, 要得到$a, 就是$a, 要得到@a的元素, 就用$a[index]
是没有冲突的啦

晕死, 才睡醒, 感觉有点语无伦次, 不知你能不能看懂我说什么...

论坛徽章:
0
3 [报告]
发表于 2007-01-03 12:00 |只看该作者
$_[$i]中的$_还是代表◎_

论坛徽章:
0
4 [报告]
发表于 2007-01-03 12:26 |只看该作者

回复 4楼 yszll 的帖子

差不多, '$'可以理解为"取标量", 在引用方面用的比较多
如: $a = \@A
     $$a[index]就是@A的第index个元素, 跟$A[index]相等

论坛徽章:
0
5 [报告]
发表于 2007-01-03 12:47 |只看该作者
哦,明白了。 多谢指点。 看来我学的还不够扎实。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP