Мне нужно преобразовать дату в строку. Дата вводится как 07/04/2010
и затем должна читаться как July 4th 2010
. Его также можно вводить, используя одинарные цифры вместо двойных (7 вместо 07, и нужно добавить 20 к году, если пользователь вводит только /10).
Это то, что я имею до сих пор -
#!/usr/bin/perl
use CGI qw(:standard);
use strict;
#declare variables
my ($date, $month, $day, $year);
my @months = ( "January", "February", "March"
, "April", "May", "June", "July"
, "August", "September", "October"
, "November", "December"
);
#assign input item to variable
$date = param('Date');
#break date apart
$date =~ /([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{2,2}|20[0-9]{2,2})/;
$month = $1;
$day = $2;
$year = $3;
unless($year =~ /20[0-9]{2,2}/){
$year = "20".$year;
}
$date = $months[int($1)]." ".$day.", ".$year;
#display date
print "<HTML><HEAD><TITLE>The Date</TITLE></HEAD>\n";
print "<BODY>\n";
print "The date is: $date\n";
print "</BODY></HTML>\n";
Однако я продолжаю получать ошибки
Use of uninitialized value in pattern match (m//) at c08ex6.cgi line 14.
Use of uninitialized value in pattern match (m//) at c08ex6.cgi line 18.
Use of uninitialized value in concatenation (.) or string at c08ex6.cgi line 19.
Use of uninitialized value in int at c08ex6.cgi line 21.
Use of uninitialized value in concatenation (.) or string at c08ex6.cgi line 21.