in reply to changing array elements
You want to move certain array elements to the end? I'd do it like this:
my @front, @back; while( @array1 ) { if( exists $skip{$_->[0]} ) { push @back, $_; else { push @front, $_; } } my @array2 = (@front, @back);
The while loop could also be written as
push @{exists $skip{$_->[0]} ? \@back : \@front}, $_;
... and from there you could always carry on as far as
push @{exists $skip{$_->[0]} ? \@back : \@front}, $_ for @array;... and do away with the while but that requires a much more advanced understanding of Perl and I'm not sure that it's any clearer. And of course it becomes a real pain to step through it in the debugger... And of course I may have completely misunderstood what you're trying to do :)
|
|---|