- 论坛徽章:
- 0
|
原帖由 Nosferatu 于 2008-1-22 16:39 发表
apile大大的话正是我想说的,过度复杂的re会给以后的维护带来很大的困难,如果写出来的正则表达式像天书一样,基本上这时候你就该考虑重构了
说实话 我这个程序正是跟 apile大大的 学的 他的原程序
发表在 2005-8-19 12:55 apile
apile
perl 排序
- #!/usr/bin/perl
- open(FF,"xxx.txt");
- @by2and3 = map{$_->;[0]} sort{$a->;[1] <=>; $b->;[1] || $a->;[2] <=>; $b->;[2] }
- map{[$_,(split(/,/))[1],(split(/,/))[2]]} <FF>;;
- close(FF);
- for(@by2and3){
- print ;
- }
复制代码xxx.txt
#abc,1,2,cvdadfsda
#abc,1,22,cvdadfsda
#bcd,1,10,dfjdkf
#bcddf,2,2,dfjdkfdfjd
#bcd,2,2,dfjdkf output
$ perl tt.pl
#abc,1,2,cvdadfsda
#bcd,1,10,dfjdkf
#abc,1,22,cvdadfsda
#bcddf,2,2,dfjdkfdfjd
#bcd,2,2,dfjdkf
更簡單的..如果第一栏数字,第二栏是文字...分隔符号是空白...
把
map{[$_,(split(/,/))[1],(split(/,/))[2]]} 改成用\s+分隔
sort{$a->;[1] <=>; $b->;[1] || $a->;[2] <=>; $b->;[2] }
其中的$a->;[2]<=>;$b->;[2] 改成 $a->;[2] cmp $b->;[2]
可以叁考精华区中 sort与map的特殊用法..
关於第二的问题..当然可以..只是你要考虑
data的正确性问题...同时被修改的话..data就 会出问题了... |
|