我在这段Perl代码中犯了什么错误?

3
use strict;
use warnings;

my %hash = ("no1"=>1,
         "no2"=>2,
        );

my @array = %hash;

print @array; #Output: no11no22
print "\n";
my $string = print @array; 
print $string; #Output: no11no221

为什么 $string 和 @array 不同?为什么最后会得到1?我犯了什么错误?
2个回答

5
主要问题在于`print`并不会返回一个字符串,而是会将字符串打印到文件句柄中(参见`perldoc -f print`)。相反,你可以使用`my $string=join('',@array);`来实现。

3
如果操作成功,返回true(1),如果出现IO错误,则返回false。因此,“no11no22”来自“print @array”,而“1”来自“print $string”。请注意不改变原意,尽量使翻译通俗易懂。 - ysth

5
当您赋予 "print" 值时,您将获得正在打印的变量值和返回代码(成功为 1)。请参阅 perldoc print

1
哦,我明白了。那就是原因。谢谢你,马托。 - Chankey Pathak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接