- 论坛徽章:
- 0
|
本来是来这里为下面我要说的东西寻求帮助的。。。
但是实在不甘心,混了这么久了,这都是些简单问题,怎么还来问呀!
算了,再搜下!(其实我准备问之前已经搜索过很多资料了。。。笨 )
终于找到了我想要的答案!
就干脆写成一个笔记帖算了。。。。
问题一:如何更简单地交换两个数组的值?
比如:
@a=(1,2,3);
@b=(4,5,6);
执行交换后,应该是:
@a是(4,5,6);
@b是(1,2,3);
我之前只知道用中间变量的笨办法:- @temp=@a;
- @a = @b;
- @b = @temp;
复制代码 当然我还妄想地试了下这种:
(@a, @b) = (@b, @a)
当然失败。。。数组放到()里面并且作为右值意味着连接他们。。。当然值全部给@a了。。。@b是空的。。。
然后在准备问之前又搜。。。终于。。。。(之前搜索都是用 how to exchange...,妈哟,最后发现应该用how to swap arrays做搜索词更能找到料,英文不好呀。。。)
请看这里:http://mail.perl.org.il/pipermail/perl/2004-February/004246.html
里面也解释了貌似上面的情况在package variables (i.e. globals,| optionally localized) 是可用的!对于my定义的数组是不起作用的。具体可以查看:http://mail.perl.org.il/pipermail/perl/2004-February/004257.html
问题二:对数组进行排序。(有perl基础的可以忽略此问题。。。太基础了这问题。。。)
其实我之前没有看perl数组的处理,所以是完全按照C语言的风格行事,整出了这样的傻code:- my ( $t1, $t2 ) = ( $arr_given[0], $arr_given[1] );
- @$arr_given = ( $t1 < $t2 ? $t1 : $t2, $t1 > $t2 ? $t1 : $t2 );
复制代码 觉得perl不会这么傻,是我太傻,所以研究了下,原来perl有很多种对数组排序的方法。。。。。
在http://www.misc-perl-info.com/perl-arrays.html里面看到的,摘录部分出来:- @gemstones = sort (@gemstones);
- @gemstones = sort {$b cmp $a} @gemstones;
- @sortedNumbers = sort {$a <=> $b} @numbers;
- @numbers = sort {$b <=> $a} @numbers;
复制代码 唉。。。借此机会又温故了perl fqa,真的好东西
|
|