+ -
当前位置:首页 → 问答吧 → 新手问题

新手问题

时间:2011-06-17

来源:互联网

取唯一数



QUOTE:
#!d:/perl/bin/perl.exe
use 5.10.0;
@a=(1..4,2..6,3..10);
foreach(@a){
        my %num;
        if (++($num{$_}) ==1){
                push @b,$_;
        }else{
                next;
        }       
}
say @b;


@b=grep {++$num{$_}==1} (1..4,2..6,3..10);
say @b;



运行结果:
123423456345678910
12345678910

第一种写法哪里有问题呢?

作者: mysqllog   发布时间: 2011-06-17

每次循环 %num 都是空的,看看你的 my 声明在哪里。Perl 不需要初始化,相应的就要靠声明来提高清晰度

作者: zhlong8   发布时间: 2011-06-17

对哦,my词法变量会产生真正的私有变量,在每次的循环中%num都被初化为空了...

作者: mysqllog   发布时间: 2011-06-17