我的文件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
答案 0 :(得分:1)
您实际上并未在代码中使用sort
运算符。其次,print OUTPUT
行没有意义......你没有打印OUTPUT
文件句柄。
简单地说,只要您捏住INPUT
文件句柄,然后将其打印到OUTPUT
文件句柄
my @array = sort <INPUT>;
print OUTPUT @array;
根本不需要使用join
。数组中的行已经有INPUT
文件中已有的换行符。