I tend to use a few tricks with map and grep to preserve the original array than to seek out and use something different.
@new = map { ... } @{[ @original ]};
or even
@new = grep { local $_ = $_; ... } @original;
If legibility (management overhead due to fussy boss) is a concern, I then choose to use an idomatic version of the for / do { ... } for loop.
... for @new = @original;
or if you want multiple expressions within the loop..
do { ...; ... } for @new = @original;
perl -e '$,=$",$_=(split/\W/,$^X)[y[eval]]]+--$_],print+just,another,split,hack'er
|