Perl引用的使用与嵌套数据结构构建
1. 引用基础与子程序参数传递
在Perl中,引用是一个强大的工具。当修改@array2时,它不会影响@array1,因为它们是内容独立的不同数组。而$arrayref中对@array1的引用,会和@array1的当前内容相同,因为引用指向的是和@array1相同的内存位置。
1.1 子程序参数传递问题
Perl传递参数进出子程序的能力比较基础。所有传入子程序的列表参数会被扁平化到一个单一列表中,并存储在@_里,返回值也会以单个标量或扁平化的标量列表形式返回。这虽然让简单参数处理变得容易,但对于接收多个列表作为参数的子程序来说,会出现问题,因为这些列表在传入子程序时会失去其原本的标识。
1.2 传统方法示例
下面是一个子程序示例,它接收两个数组作为参数,并返回它们的交集:
sub inter { my @first = splice(@_,0,shift); my @final = (); my ($el, $el2); foreach $el (@first) { foreach $el2 (@_) { if (defined $el2 && $el eq $el2) { pus