#!/usr/bin/perl my $term = 'foo'; my @ary = qw/one foo another foo too many foos/; # print elements and addresses before print "$_->[0] => $_->[1]\n" for map {[$_ => \$_]} @ary; for (my $i = 0 ; $i < @ary ; $i++) { splice @ary, $i, 1 and @ary - $i and redo if $ary[$i] eq $term; } # print elements and addresses after print "\n"; print "$_->[0] => $_->[1]\n" for map {[$_ => \$_]} @ary; #### one => SCALAR(0x80f57ac) foo => SCALAR(0x80f58a8) another => SCALAR(0x80f56bc) foo => SCALAR(0x80fc944) too => SCALAR(0x80ff6c4) many => SCALAR(0x80ff6d0) foos => SCALAR(0x80ff6dc) one => SCALAR(0x80f57ac) another => SCALAR(0x80f56bc) too => SCALAR(0x80ff6c4) many => SCALAR(0x80ff6d0) foos => SCALAR(0x80ff6dc)