3 回答
TA贡献2041条经验 获得超4个赞
Perl中没有所谓的二维数组,Perl中的二维数组实际上是引用,用@开头是不对的,
$array2=[ ["good","just so so","bad"],
["good","just so ","bad"],
]
建立了一个引用,
但是问题是,楼主在引用这个数据的时候,想使用列表上下文(?),把引用改成列表的时候,应该是@$array2,对吧。
但你在循环里使用了@array2,它原本没有定义,你一使用就定义了,定义了之后,你又调用$array2[2][1],这个调用实际上调用了@array2数组,而不是引用,引用的引用名和第一个[2]之间要有->,不然调用的是数组,因为你调用了数组,所以[2][1]就是没有定义的了。
这个具体的建议你看一下Perl关于引用的详细内容,还有引用用在复杂数据结构上时应该注意的。
TA贡献1793条经验 获得超6个赞
perl用push根本不需要什么modul
二维数组,不能那么写。而且只有两行,哪来的[2]}[1]?
@array2=( [1, 2, 3, 4],
[5, 6, 7, 8],
[9, 0, 1, 2] );
print ${$array2[2]}[1]."\n\n";
TA贡献1821条经验 获得超6个赞
用的是引用,初始化没错,不过[2] 的确不存在,
push 是perl的内建函数 ,不用module,
应该是 push @array2,@array1;
push 第二个参数可以直接是数组,不应该是引用。
添加回答
举报
