
%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,在标量上下文中创建值.
总结以上是内存溢出为你收集整理的perl – 引用问题的数组与列表全部内容,希望文章能够帮你解决perl – 引用问题的数组与列表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)