sub routine { ...code... ...code... print "MY CHOICE #1: $my_choice\n"; read_export_file(@config_values, $my_choice); } sub read_export_file { my @config_values = shift(@_); my $config_choice = shift(@_); print "MY CHOICE #2: $config_choice\n"; } MY CHOICE #1 gives one(1) , that's good, but in the second function: MY CHOICE #2 gives two(2), why is that?