Поскольку вы присваиваете список / хэш, первый аргумент поглощает все это.
my %h1 = ( key => value );
my @a1 = (1, 2 );
my ( @a2, %h2 ) = ( @a1, %h1 );
# @a2 now contains (1,2,key,value) and %h2 is undefined.
Чтобы получить то, что вы хотите, вы должны вместо этого передать ссылки.
ConnectODBC( \%settings , \@connectionString);
sub ConnectODBC {
my ( $setting_ref, $connection_ref ) = @_;
my %settings = %$setting_ref;
my @connectionString = @$connection_ref;
}
Я должен отметить, что создание хэшей и массивов из ссылок в подпрограмме, вероятно, не является необходимым. Вы можете получить доступ к настройкам прямо из ссылки. $setting_ref->{key}
совпадает с $settings{key}
.