Perl 引用的使用与嵌套数据结构
1. 引用基础与子例程中的应用
1.1 引用基础
在 Perl 中,修改 @array2 不会影响 @array1 ,因为它们是内容独立的不同数组。但如果有一个引用 $arrayref 指向 @array1 ,那么 $arrayref 所引用的内容会和 @array1 当前的内容一致,因为它们指向相同的内存位置。
1.2 子例程参数传递
Perl 传递参数进出子例程的能力较为基础。所有传递给子例程的列表参数都会被扁平化到一个单一列表中,并存储在 @_ 里,返回值也会以单个标量或扁平化的标量列表形式返回。这种方式处理简单参数很方便,但对于需要多个列表作为参数的子例程就会有问题,因为列表在进入子例程时会失去原有标识。
可以通过多种方式绕过这个限制,比如将列表存储在全局数组或哈希变量中,或者传递列表的相关信息(如长度)作为参数,以便在子例程内部重建列表。不过,最合理且高效的方法是传递引用而非实际的列表内容,然后在子例程内部对引用进行解引用以获取列表内容。
以下是一个示例,展示了一个接受两个数组作为参数并返回它们交集的子例程:
sub inter {
my @first = splice(@_,0,shift);
my @final = ();
my ($el, $el2);
超级会员免费看
订阅专栏 解锁全文
46

被折叠的 条评论
为什么被折叠?



