Perl在csv文件中排序日期和时间

时间:2016-02-11 07:17:59

标签: perl sorting date

我的文件file.csv有一些列,其中第1列代表日期和时间,我试图按日期和时间对其进行排序,但它只是根据时间排序。请检查并建议。

#!/usr/bin/perl

use strict;
my $input_dir = "d://perl//output";
my $output_dir = "d://perl//output";
my $input_file = "$input_dir//file.csv";
my $output_file = "$output_dir//output2_file.csv";
open (OUTPUT, ">>$output_file") or die "Error 016: Error creating $out
+put_file \n";
open (INPUT, "<$input_file") or die "Error 001: Error locating file $i
+nput_file \n";

my @array =(<INPUT>);

#print "Array\n";
#@print join( "\n", @array )."\n\n";

print "Sort Date\n";
print join( "\n", @sortedTime )."\n\n";

 print OUTPUT;
close (OUTPUT);
    close (INPUT);
file.csv中的

数据类似于

2016-02-02:00:44,mttsmshub1  
2016-02-05:00:39,mttsmshub1  
2016-02-03:00:32,tttsmshub1  
2016-02-04:00:24,mttsmshub1  

当前输出看起来像

2016-02-04:00:24,mttsmshub1  
2016-02-03:00:32,tttsmshub1  
2016-02-05:00:39,mttsmshub1  
2016-02-02:00:44,mttsmshub1  

预期输出应为

2016-02-02:00:44,mttsmshub1  
2016-02-03:00:32,tttsmshub1  
2016-02-04:00:24,mttsmshub1  
2016-02-05:00:39,mttsmshub1  

1 个答案:

答案 0 :(得分:1)

您实际上并未在代码中使用sort运算符。其次,print OUTPUT行没有意义......你没有打印OUTPUT文件句柄。

简单地说,只要您捏住INPUT文件句柄,然后将其打印到OUTPUT文件句柄

即可进行排序
my @array = sort <INPUT>;
print OUTPUT @array;

根本不需要使用join。数组中的行已经有INPUT文件中已有的换行符。