如何连接if语句到字符串?

时间:2016-09-08 04:54:29

标签: string perl if-statement concatenation

use DateTime::Format::Natural;
$parser = new DateTime::Format::Natural;
$dt = $parser->parse_datetime("1 Test 2010");
print "Date: " . ($dt->dmy('/') if $parser->success);

为什么最后一行没有编译?

2 个答案:

答案 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;