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)
为什么最后一行没有编译?
它不能编译,因为那种形式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").