本帖最后由 523066680 于 2014-10-1 22:10 编辑
交换两个数组的内容
方法一、
列表赋值,限定长度使得元素对号入座- my @a=(1..5);
- my @b=('a'..'g');
- (@a[0..$#b], @b[0..$#a]) = (@b, @a);
复制代码 方法二、
交换地址。- local (@a, @b);
- @a=(1..5);
- @b=('a'..'g');
- (*a, *b) = (\@b, \@a);
复制代码 或者- (*a, *b) = (*b{ARRAY}, *a{ARRAY});
复制代码 方法二中的数组定义不能是my
参考《Perl语言编程》第二章 集腋成裘 - typeglob (类型团)
所有这些都只影响全局(包)变量;词法不能通过符号表记录访问。
补充: 第一种方法只在两个数组长度相同时适用,之前测试的时候疏忽了。 |