use strict; use warnings; use Data::Dumper; my @arr=(["one" => [1,11]], ["two"=> [2,22]]); my ($position, $value) = @ARGV; print "\nBefore:\n"; print Dumper @arr; push (@{$arr[$position]->[1]}, $value); print "\nAfter:\n"; print Dumper @arr; __END__ Before: $VAR1 = [ 'one', [ 1, 11 ] ]; $VAR2 = [ 'two', [ 2, 22 ] ]; After: $VAR1 = [ 'one', [ 1, 11 ] ]; $VAR2 = [ 'two', [ 2, 22, '222' ] ];