数值类型数组排序使用:
sort { $a <=> $b } @array; #升序排列 sort { $b <=> $a } @array; #降序排列
字符串类型数组排序使用:
sort { $a cmp $b } @array; #升序排列 sort { $b cmp $a } @array; #降序排列
字符串比较忽略大小写使用:
sort { lc($a) cmp lc($b) } @array;
字符串-数字类型数组排序使用:
@list = ("ab,33,dd", "cc,1,ee", "bb,12,cc");
foreach $line (@list){
@sss = split(/,/,$line);
$save{$sss[1]} = $line;
}
my @key =sort {$a <=> $b} keys %save;
for my $i(@key){
push @array, "$save{$i}";
}
print "@array\n"; # cc,1,ee bb,12,cc ab,33,dd
特别的,先后顺序的排序:
#!/usr/bin/perl @list = ("ab,58,cd,0","bb,58,cd,0","cb,44,dd,e"); @array; &compare(@list); #cb,44,dd,e ab,58,cd,0 bb,58,cd,0 foreach (@array){ print "$_\n"; } sub compare { my @list = @_; @Sum; $i = -1; @array; foreach (@list){ $i++; @sss= split (/,/,$_); push @Sum,{name => $sss[0],num => $sss[1],tile => $sss[2],other => $sss[3]}; } sub sen { $a->{num} <=> $b->{num} or $a->{name} cmp $b->{name} } @Result = sort sen @Sum; foreach $aa (@Result){ @ls = (); push @ls, "$aa->{name}"; push @ls, "$aa->{num}"; push @ls, "$aa->{tile}"; push @ls, "$aa->{other}"; $line =join(",",@ls); push @array, $line; } }