use strict; use warnings; my @arr; for (0, 2, 4, 4.1, 5, -1, -5, -6) { @arr = (0,1,2,3,4); deleteA(\@arr, $_); print "Deleted $_: @arr\n"; } sub deleteA { my ($arr, $i) = @_; return if int $i > $#$arr || int $i < $#$arr * -1 - 1; splice(@$arr, $i, 1); }