我有Perl substr函數的問題。這是如此簡單,但無論如何......不知道是什麼問題。Perl substr錯誤
sub encode_date
{
$date = $_[0];
$day = substr($date, 0, 2);
$month = substr($date, 2, 2);
$year = substr($date, 6, 4);
return "$year-$month-$day";
}
Sub接受「DD.MM.YYYY」格式的字符串,必須將其轉換爲「YYYY-MM-DD」格式。
輸入: 1993年9月9日
輸出: 0-09-93-19 ???
有人可以解釋什麼是錯的,請。
p.s .:我爲解碼日期編寫了另一個子文件(從'yyyy-mm-dd'到'dd.mm.yyyy'),並且所有工作都正常。
sub decode_date
{
$date = $_[0];
$year = substr $date, 0, 4;
$month = substr $date, 5, 2;
$day = substr $date, 8, 2;
return $day.".".$month.".".$year;
}
當然,我試圖返回值的兩個substr $date, 0, 2;
和substr($date, 0, 2);
和不同的組合。
我不能重現您所描述的輸出;我得到了'1993-0.090'(當然這仍然是錯誤的,但至少有意義,因爲你的子串偏移是錯誤的)。 – ruakh
您的第一個示例不會生成您描述的輸出。然而,第一個例子的sub不會遭遇錯誤:第二個'substr'表達式應該是'substr($ date,3,2)'。 – DavidO
是的。 $日期被編碼了2次。這是問題所在。 'encode_date(encode_date($ date));'這樣的東西,但在不同的文件。 TY。 –