我试图传递ConnectODBC(%settings , @connectionString);
哈希abd然后数组
在我加载的函数中就像 my (%settings , @connectionString) = @_;
哈希我得到正确的价值但是 print $connectionString[0] . ".\n";
我明白了 Use of uninitialized value $conection[0] in concatenation (.)
知道为什么吗?
由于您要分配列表/哈希,因此第一个参数会全部吸收它.
my %h1 = ( key => value );
my @a1 = (1, 2 );
my ( @a2, %h2 ) = ( @a1, %h1 );
# @a2 now contains (1,2,key,value) and %h2 is undefined.
Run Code Online (Sandbox Code Playgroud)
要获得所需内容,您应该传递引用.
ConnectODBC( \%settings , \@connectionString);
sub ConnectODBC {
my ( $setting_ref, $connection_ref ) = @_;
my %settings = %$setting_ref;
my @connectionString = @$connection_ref;
}
Run Code Online (Sandbox Code Playgroud)
我应该注意,在子程序中从参考中创建哈希和数组可能是不必要的.您可以直接从参考中访问设置.$setting_ref->{key}
是一样的$settings{key}
.
归档时间: |
|
查看次数: |
4192 次 |
最近记录: |