Of course, ++merlyns post shows what an elegant solution is... So that's the cute idiom you where asking for!
Assuming you /can|want/ not process the duplicates right away, you could save memory by omitting the extra array @out. When you go over the array for the fist time, do the counting, then do the processing separately:
my @in = qw(test foo test bar baz foo test); my %keycount; foreach (@in) { $keycount{$_}++; # do whatever else you need to do } foreach (keys %keycount) { #print $_ if $keycount > 1; print if $keycount{$_} > 1; # Thx, ++Aristotle! # or do something else with $_ }
So long,
Flexx
In reply to Re: Get All Duplicated Elements in an Array (Once, without shifting)
by Flexx
in thread Get All Duplicated Elements in an Array (Once, without shifting)
by George_Sherston
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |