Perl的变量定义域问题
mysam 2009-04-01 11:58:47 写了一个得到数组中重复元素的函数
sub get_uni_rearray #取得数组中的重复元素建立新的数组 (1,2,6,3,1,2,54,1,2,2) 输出 (1,2)
{
@array=@_;
Loop:for($k=0;$k<=$#array;$k++) {
for ($m=0;$m<$k;$m++) {
if ("$array[$k]" eq "$array[$m]") {
for ($l=0;$l<=$#nr_array;$l++){
if ("$array[$k]" eq "$nr_array[$l]") {
next Loop;
}
}
push(@nr_array,$array[$k]);
next Loop;
}
}
}
return @nr_array;
####################################
测试
@test=('wang','wang','zhong','li','xi','xin','love','love');
@test2=(3,55,55,6,99,100,21,21,36,36,77,877);
@aaa=get_uni_rearray(@test);
print "@aaa";
print "\n";
@bbb=get_uni_rearray(@test2);
print "@bbb";
####################################
输出:
wang love
wang love 55 21 36
为什么测试@test2的时候会输出@test的内容,是有关变量定义域的问题吗?请教。