免费注册 查看新帖 |

Chinaunix

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

请教一条语句 [复制链接]

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-16 17:22 |只看该作者 |倒序浏览
  1. perl -le '@x=(1..100);@r=print for @x;print STDERR "@r"' > /dev/null
复制代码
之前仙子写的,为什么打印出来是1呢?
  1. my @x=(1..100);
  2. my @r = print for @x;

  3. print Dumper(\@r);
复制代码
这个结果是这样:
  1. $VAR1 = [];
复制代码

论坛徽章:
0
2 [报告]
发表于 2010-08-16 17:31 |只看该作者
print Dumper(\@r)  超出作用域

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
3 [报告]
发表于 2010-08-16 17:35 |只看该作者
回复 2# toniz


    什么意思?

论坛徽章:
0
4 [报告]
发表于 2010-08-16 17:39 |只看该作者
my @x=(1..100);

for( @x){
my @r = print ;
}

print Dumper(\@r);

论坛徽章:
0
5 [报告]
发表于 2010-08-16 17:40 |只看该作者
本帖最后由 黑色阳光_cu 于 2010-08-16 17:46 编辑
  1. #!/bin/env perl

  2. my $n = $_ foreach (1 .. 2);
  3. warn "\$n = $n";
  4. $m = $_ foreach (1 .. 2);
  5. warn "\$m = $m";

  6. my $l = 1 if (1);
  7. warn "\$l = $l";
  8. $k = 1 if (1);
  9. warn "\$k = $k";
复制代码
foreach的行为

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
6 [报告]
发表于 2010-08-16 17:48 |只看该作者
汗  明白了

my @r = print for @x; 看成了my @r = (print for @x);

论坛徽章:
0
7 [报告]
发表于 2010-08-16 18:25 |只看该作者
my $n = $_ foreach (1 .. 2);
warn "\$n = $n";


这个打印比较奇怪。$n没有超作用域,但值却是undef。

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
8 [报告]
发表于 2010-08-16 18:32 |只看该作者
回复 7# 黑色阳光_cu


    my $n = $_ foreach (1 .. 2);这个相当于foreach (1 .. 2){my $n = $_ }吧?这样就超出了

论坛徽章:
0
9 [报告]
发表于 2010-08-16 18:39 |只看该作者
[quote]回复  黑色阳光_cu
  1. use strict;
  2. use warnings;

  3. my $n = $_ foreach (1 .. 2);
  4. warn "\$n = $n";

  5. my $m = 1 if (1);
  6. warn "\$m = $m";
复制代码
咋解释?

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
10 [报告]
发表于 2010-08-17 10:01 |只看该作者
回复 9# 黑色阳光_cu


    my $m = 1 if (1);相当于my $m;if(1) {$m = 1};

    if跟foreach不大一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP