【发布时间】:2017-11-17 19:00:59
【问题描述】:
我有一个调用函数的 Perl 程序,在本例中为 ref,并检查结果。具体来说,我正在测试一个变量是一个哈希引用。在这种情况下,ref 将返回 'HASH'。我测试了它,它工作正常。
然后我决定记录它,添加一个print 来显示相同调用的结果,但它不能正常工作。这是一个精简版:
use strict;
use warnings;
my $book_ref = {};
$book_ref->{'title'} = 'The Lord of the Rings';
if (ref $book_ref eq 'HASH') {
print "ref \$book_ref is a " . ref $book_ref . "\n";
}
print "Program is over\n";
令我惊讶的是,这是输出:
ref $book_ref is a Program is over
尽管使用了strict 和warnings,但既没有错误也没有警告。
对ref 的调用完全相同(它是复制和粘贴),但是虽然它在if 条件内正常工作,但print 不显示任何内容,实际上似乎被中断,作为换行符明显跳过。为什么行为会改变?
【问题讨论】:
标签: perl return-value function-call