384*_*X21 3 perl multidimensional-array autovivification defined
我试图使用Perl中定义的函数来检查是否定义了元素.
代码:
$mylist[0][0]="wqeqwe";
$mylist[0][1]="afasf";
$mylist[1][0]="lkkjh";
print scalar(@mylist), "\n";
if (defined($mylist[2][0])){print "TRUE\n";}
print scalar(@mylist), "\n";
Run Code Online (Sandbox Code Playgroud)
产量
2
3
Run Code Online (Sandbox Code Playgroud)
在使用定义函数之前,第一维中有两个元素@myarray.使用定义的函数后,元素数量增加到3.
如何在不添加新元素的情况下使用已定义的函数?
首先检查第一级引用是否存在.
if ( defined($mylist[2]) && defined($mylist[2][0]) ) {
print "TRUE\n";
}
Run Code Online (Sandbox Code Playgroud)
您遇到的内容称为autovivification:在某些情况下,Perl会在您使用它们时创建复杂的数据结构,就好像它们已经存在一样.