Does your value only occur once in the array? Can it occur as the very first element (in which case, what is the desired behavior)? Here is a code snippet that moves your desired element left in the list for a single occurrence. Remove the "and last" bit to do it for all occurrences. It also ignores the first element in the list.
for (1..$#array) {
@array[$_-1,$_] = @array[$_,$_-1] and last if $array[$_] == $value;
}
-- Mike
--
just,my${.02}