如何实现循环中数组值得增加??

如何实现循环中数组值得增加??

大概思路如下:
...
foreach my $rl (@tmp1){
foreach my $ex (@box){
if ($ex ne $rl ){push(@box,$rl);}
}}
...

运行起来会出问题,请问有没有好的解决办法??
你这个逻辑很混乱啊。
不如你先描述一下你想要干啥。


QUOTE:
原帖由 放驴娃 于 2007-11-21 18:35 发表
你这个逻辑很混乱啊。
不如你先描述一下你想要干啥。

如果$rl不在@box里面的就加入@box里面
明显的逻辑错误,  代码中, $rl与@box中有多少个元素不等, 就被添加多少次
#!/usr/bin/perl -w

@a = (1,3,5,6,7,;
@b = (2,3,5,7,9);

%seen=();
@differ=();

foreach (@b){
    $seen{$_}=1;
    }
@differ=grep(! $seen{$_},@a);

push @b,@differ;

print "@b\n";

这个是不是符合lz需要?


QUOTE:
原帖由 大司南 于 2007-11-21 18:39 发表

如果$rl不在@box里面的就加入@box里面

Hi,

the basic logic is to fetch different (or same) element in two arrays
and then put the different element into a new array.
Using map and hash is one of the many ways to do that.
For example:

QUOTE:
@arr1 = ("a", "b", 8,  2);
@arr2 = ("a","c", 8, 9);
%hash = map { $_=>1 } (@arr1, @arr2);
@arr3 = sort keys %hash;
# test output:
print join ", ", @arr3;

'

--ulmer
又学习了


QUOTE:
@differ=grep(! $seen{$_},@a);

正则不完善, 如果@a中元素是多位数呢..

QUOTE:
%hash = map { $_=>1 } (@arr1, @arr2);

很巧妙.
多谢提醒!