my $pos; for (0..$#array) { $pos=$_ and last if $array[$_] eq $wanted; } @array[$pos,-1]=@array[-1,$pos];
And what if no one of them matched? (Left as an exercise to the reader)
Update: it was a wonderfully neat solution (which is the reason why I posted it!) to another problem!!
Not just as neat:
my $pos; for (0..$#array) { $pos=$_ and last if $array[$_] eq $wanted; } @array=@array[0..$pos-1, $pos+1..$#array, $pos];
And what if no one of them matched? (Left as an exercise to the reader ;-)
But then if you are sure in advance that one and only one element will match, here's a neat concise solution:
You can patch it so that it works also if the above conditions are not verified, but won't be just as elegant. (Also left as an exercise to the reader!)@array=((grep $_ ne $wanted, @array), $wanted);
In reply to Re: changing the position of an element in an array
by blazar
in thread changing the position of an element in an array
by s_gaurav1091
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |