my $col = 1 ; my @arr = (qw/one two three four five / ); my @indexes = ( 0 .. $#arr ) ; print ">> @arr[@indexes]\n"; print ">@indexes<\n"; # show the indexes ! my $key= splice @arr, $col,1; # remove $col from @arr. # You would expect that @indexes are NOT changed; However : print ">@indexes<\n"; # still the same indexes are shown. print "$key : @arr[@indexes]\n"; # this is NOT expected, but I do not understand this behaviour. print ">@indexes<\n"; # still the same indexes are shown.