用perl哈希的文本

时间:2013-12-30 21:17:15

标签: perl

有人帮我使用Perl吗?我是新的。问题是我有以下类型的文件:

37    0.61    61    0.30    86  0.03
61    0.50    42    0.44    65  0.01

我需要按照以下方式对它们进行排序:

86    0.03    61    0.30    37  0.61        
65    0.01    61    0.50    42  0.44

最后让他们喜欢:

0.03        0.30        0.61        
0.01        0.50        0.44

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

转换此数据

37    0.61    61    0.30    86  0.03
61    0.50    42    0.44    65  0.01

到这个

0.03        0.30        0.61        
0.01        0.50        0.44

按第一个值按降序排列每对数字:

#!/usr/bin/perl
use strict;

open my $fh, '<', './input.txt' or die "open: $!\n";

while (my $line = <$fh>) {
    my %data;
    while ($line =~ /(\S+)\s+(\S+)/g) {
        $data{$1} = $2;
    }

    foreach my $key (sort {$b <=> $a} keys %data) {
        print "$data{$key}\t";
    }
    print "\n";
}

close $fh;

答案 1 :(得分:0)

基于grebneke的解决方案:

#!/usr/bin/perl
use strict;
use warnings FATAL => qw/all/;

$\ = $/;
$, = "\t";

while (<DATA>)
{
    chomp;
    my %data = split;
    print map $data{$_}, sort {$b <=> $a} keys %data;
}

__DATA__
37    0.61    61    0.30    86  0.03
61    0.50    42    0.44    65  0.01