use DateTime::Format::Natural;
$parser = new DateTime::Format::Natural;
$dt = $parser->parse_datetime("1 Test 2010");
print "Date: " . ($dt->dmy('/') if $parser->success);
为什么最后一行没有编译?
答案 0 :(得分:5)
它没有编译,因为if
的形式是一个语句修饰符;它只能在语句的末尾使用,而不能在表达式的其他地方使用。
你可以这样做:
print "Date: " . ( $parser->success ? $dt->dmy('/') : '' );
或:
print "Date: " . do { $dt->dmy('/') if $parser->success };
(虽然后者会尝试打印$ parser->成功,如果它是假的,它会打印"日期:0"在这种情况下)。
答案 1 :(得分:1)
也许在这里使用三元运算符?
print 'Date: ' . ($parser->success ? $dt->dmy('/') : '');
或者将代码分成两个语句;
print 'Date: ';
print $dt->dmy('/') if $parser->success;