我想重新格式化MySQL的日期。這個Perl單線程給了我下面的錯誤信息。Perl oneliner可能是一個失控的多行++消息
我想知道爲什麼它給出這個錯誤信息。
echo 'Dec 2 04:08:40 EST 2012' | perl -lane ' my @abbr = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
($amon, $mday, $hour,$tz, $year) =split('\s+',$_);
for (my $i = 0; $i < @abbr; $i++) {
next unless $abbr[$i] =~ /^$amon/;
$mon=$i;
}
$mon++;
print "$year-$mon-$mday $hour";
'
錯誤消息
syntax error at -e line 3, near ") {"
(Might be a runaway multi-line ++ string starting on line 2)
syntax error at -e line 9, near ";}"
Execution of -e aborted due to compilation errors.
在您的文章中突出顯示的語法是否可以幫助您發現至少一個問題?把所有這些放在一個腳本中,在命令行上試圖做到這一點是毫無意義的。 – Mat
我在VIM中使用了這個部分,它沒有顯示它 – sfgroups
對於'單行'使用10行(包括空白行)看起來似乎是一個矛盾。在Perl中,您可以選擇使用哪些字符作爲'單引號',因此請編寫:split(q {\ s +},$ _);'以避免在Perl腳本中使用單引號。 –