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

CJ7*_*CJ7 1 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);
Run Code Online (Sandbox Code Playgroud)

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

yst*_*sth 5

它不能编译,因为那种形式if是一个语句修饰符; 它只能在语句的末尾使用,而不能在表达式的其他地方使用.

你可以做:

print "Date: " . ( $parser->success ? $dt->dmy('/') : '' );
Run Code Online (Sandbox Code Playgroud)

要么:

print "Date: " . do { $dt->dmy('/') if $parser->success };
Run Code Online (Sandbox Code Playgroud)

(虽然后者将尝试打印$ parser->成功,如果它是假的,并且在那种情况下它将打印"Date:0").