免费注册 查看新帖 |

Chinaunix

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

请教一个关于array的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-29 14:39 |只看该作者 |倒序浏览
#!c:\perl\bin\perl -w

use strict;

my @array = qw /John Paul May/;
my $strings='array';

for my $i(0...$#array) {
        print $array[$i],",";
}

for my $i(0...$#{$strings}) {
        print $array[$i],",";
}

请问为什么第二个for循环输出与第一个for循环不同。
如何才能修改才能一致??

初学者,多谢各位指导。

论坛徽章:
0
2 [报告]
发表于 2005-04-29 14:44 |只看该作者

请教一个关于array的问题

  1. my @array = qw /John Paul May/;
  2. my $strings=\@array;

  3. for my $i(0...$#array) {
  4. print $array[$i],",";
  5. }
  6. print("\n");
  7. for my $i(0...$#{$strings}) {
  8. print $array[$i],",";
  9. }
复制代码
arcong 该用户已被删除
3 [报告]
发表于 2005-04-30 00:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-04-30 02:12 |只看该作者

请教一个关于array的问题

原帖由 "arcong" 发表:
请问一下
$string=\@array

和楼主用的$string='array'

有什么区别?

还有个问题...
用 my $i(0...$n) {   }
中的$i 和$n..是不是只有$i不是全局变量..?
这个是不是等同于 (for $i=0;$i<$n;$i++) {   ..........

1,$string=@array返回的是数组的个数,而$string='array'就是给标量$string赋值
2,my操作符指定一个变量(标量)为一个私有的!他起作用的域限于一个块内,如果脚本很短小,这个my是多余的!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-04-30 10:01 |只看该作者

请教一个关于array的问题

拿掉use strict;

@array = qw /John Paul May/;
$strings='array';
前面的my拿掉..就能得到一樣的結果...
為什麼會這樣...以前沒注意看那個章節..可能@{$strings}
只能用在global  or local variable吧..
因為放置的位置不同..所以my你不能這樣用....

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2005-04-30 11:07 |只看该作者

请教一个关于array的问题

apile 前辈说的是对的。
符号引用的确只能针对全局变量使用,用 my 标识的局部变量是不能作为符号引用的。
另外我补充一点:
之所以要把 use strict 去掉,是因为 use strict 禁止了符号引用。这段代码按照我的理解,应该这么写比较妥当:
  1. use strict;
  2. no strict 'refs';

  3. our @array = qw /John Paul May/;
  4. our $strings='array';

  5. for my $i(0..$#array) {
  6.       print $array[$i],",";
  7. }

  8. print "\n";

  9. for my $i(0..$#{$strings}) {
  10.       print $array[$i],",";
  11. }
复制代码

之所以还是加上 use strict,是因为没有这一句给人带来的坏处确实太多了。还是加上为好。不过可以有选择地将符号引用打开。
如果你是要编制自己的模块、并且要在模块中使用符号引用的话,建议在模块的开始处加上 no strict 'refs' 并且在结尾处再加上 use strict 'refs' 这样子就可以避免在别的模块继续允许符号引用了,毕竟符号引用有时候也会给人带来一些麻烦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP