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 :)


print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u'