我创建了一个脚本,用户在执行脚本时需要提供开始和结束日期。用户输入的日期格式应仅为YYYY-MM-DD
格式。
start_date = $ARGV[0];
end_date = $ARGV[1];
请告知。
答案 0 :(得分:5)
正如其他人所说,这可以通过regular expressions来完成。但是,如果您想快速实施完整而强大的解决方案,那么CPAN就是您的朋友。
This TechRepublic article包含对Date&的良好比较CPAN上的时间模块。
对于您的特定用途,您应该考虑Time::Normalize
。请参阅其文档的Diagnostics
部分。
另请参阅SO上的How can I validate dates in Perl?。
答案 1 :(得分:2)
首先,
my ($start_date, $end_date) = @ARGV;
也有效。
if ( $var =~ /^(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})$/ ) {
# see %+ in perldoc perlvar
现在,您需要确保这些值是有效的年,月和日。
答案 2 :(得分:1)
假设你的意思是
$start_date = $ARGV[0];
$end_date = $ARGV[1];
即。语法上有效的Perl代码,那么你可能会做类似
的事情die "Please enter dates in YYYY-MM-DD format\n"
unless $start_date =~ /^\d{4}-\d\d-\d\d$/;
die "Please enter dates in YYYY-MM-DD format\n"
unless $end_date =~ /^\d{4}-\d\d-\d\d$/;