perl – 引用问题的数组与列表

前端之家收集整理的这篇文章主要介绍了perl – 引用问题的数组与列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_0@
@H_403_0@
关于以下代码的两个问题:

%h1 = {
    'key1' => ( 1,2,3 ),'key2' => ( 4,5,6 )
    };

%h2 = {
    'key1' => [ 1,3 ],'key2' => [ 4,6 ]
    };

print $(@h1{'key2'})[1];

Q1:h1和h2有什么区别?请不要说’一个是列表的哈希和另一个数组的哈希’…相反,我想知道在使用方面的转换.

Q2:为什么print语句中的引用$(@ h1 {‘key2’})[1]不能编译?这是我的想法:我想访问对应于’key2’的数组/列表:@ h1 {‘key2’}.然后我想访问该列表/数组中索引1处的标量:$(@ h1 {‘key2’})[1].为什么这是错的?这个变量引用的东西很混乱.

解决方法

这些都不像你想的那样工作.使用严格并始终使用警告.

%h1 = {
'key1' => ( 1,6 )
};

您正在尝试将hashref({}构造)分配给哈希.它被字符串化为标量,并在%h1中用作键,值为undef.另外,因为你正在使用列表(()构造),它会变得扁平,你正在创建哈希:

%href = ( key1 => 1,2 => 3,key2 => 4,5 => 6,);

在后一种情况下,您使用数组引用([]构造)正确创建哈希,但您仍然在为哈希分配href.你想做:

%h1 = (
'key1' => [ 1,6 ]
);

这将通过引用在列表上下文中创建%h1,在标量上下文中创建值.

@H_403_0@

猜你在找的Perl相关文章