我使用的是Perl,有一个输入文件,其中包含多个日期,例如17/04/2021,这些日期是以文本形式写入的。我如何将它们转换为日期格式,然后比较它们,看看哪个是最新的?
输入文件格式:
01/09/2020
23/10/2019
12/06/2022
15/08/2017
Perl脚本:
#! /usr/bin/perl
use warnings;
use strict;
use Data::Dumper;
my $InputFile = "path/to/file.input";
open(FH, '<', $InputFile) or die $!;
while(my $Line = <FH>)
{
}
close(FH);
- 谢谢-谢谢
3条答案
按热度按时间piv4azn71#
格式为
yyyymmdd
的日期可以直接比较,也可以用数字或词汇进行比较。当在标量上下文中使用“菱形运算符”
<>
时,它逐行读取在命令行上提交的文件。(而不是/\//
).它的下一个(可选)参数,即生成要拆分的字符串的表达式,默认为$_
变量。另请根据需要参阅reverse、join、sort和List::Util。也可以在命令行程序(“单行程序”)中执行此操作
其中
}{
表示END { }
块的开始。或者,仅表示最新日期如果你想要更紧凑的,
列表上下文中的菱形运算符一次返回所有行,这里它的输出被提供给map,并施加列表上下文。
或在命令行上
wwwo4jvm2#
strptime
(永远)是您的朋友:要以一行程序的形式执行此操作,可以执行以下操作:
一行程序并不完全相同,因为它将在一行中处理多个日期,而脚本严格要求每行只包含一个日期。
sycxhyv73#
这里有一种方法:
或者,如果你喜欢简洁:
在这两种情况下,都需要将文件作为参数传递给脚本: