1

我正在尝试使用 Perl 对文本文件中的以下价格列进行排序。

Time    Num    Size     Price Act | Act Price   Size    Num       Time  
11:30:12.957    1   3000 11.90  A  |  A  11.05   500     1      11:30:12.954   
11:30:12.957    1   100  11.75  A  |  A  14.00   1676    3      11:30:12.957

我可以将文本文件读入一个数组并按行对其进行排序,但我想不出如何按升序降序对特定列进行排序?尝试按如下方式一次读取文本文件中的一个元素,然后尝试Price按降序对第一列进行排序

use strict;
use warnings;

open(my $file_handle, '<', 'Data.txt') or die("Error: File cannot be opend:  $!");

my @words;

while (<$file_handle>) {
chomp;
@words = split(' ');
}
4

1 回答 1

2
use strict;
use warnings;

open(my $file_handle, '<', 'Data.txt') or die("Error: File cannot be opend:  $!");

my @rows;

while (<$file_handle>) {
  $. > 1 or next; # skip header line
  chomp;
  push @rows, [ split ]; # split current line on \s+ 
}

# sort descending on 4-th column
@rows = sort { $b->[3] <=> $a->[3] } @rows;

# ascending sort on same column
# @rows = sort { $a->[3] <=> $b->[3] } @rows;
于 2013-09-28T16:32:50.230 回答