为什么这个标量值返回int为1? (的Chomp)

时间:2012-10-21 20:37:45

标签: perl

$接收者正在返回1.

print "Who is receiving this message?:";
my $receiver = chomp(my $r = <STDIN>);
print $receiver;

另外,我在哪里可以找到更多关于chomp的文档?谢谢。

5 个答案:

答案 0 :(得分:8)

chomp返回从其参数列表中每个字符串末尾删除的输入记录分隔符(在$/中)中的任何字符。应该使用它:

chomp(my $reciever = <STDIN>);

chomp可用于数组和列表,我认为这是此功能的原因:

my $count = chomp(@array);

chomp的文档位于perldoc -f chomp

答案 1 :(得分:3)

它返回从其所有参数中删除的字符总数。

请参阅http://perldoc.perl.org/functions/chomp.html

相反,您可能需要chomp(my $receiver = <STDIN>);

答案 2 :(得分:2)

因为chomp返回从其参数中删除的换行符的数量。有关详细信息,请查看perldoc -f chomp

您可能想要的是chomp(my $receiver = <STDIN>);

答案 3 :(得分:1)

因为你错了。

use Modern::Perl; 
my $receiver; 
chomp($receiver = <STDIN>); 
say "Result: " . $receiver;'

更多信息:

perldoc -f chomp

http://perldoc.perl.org/functions/chomp.html

答案 4 :(得分:0)

Chomp执行“就地”删除并返回删除的字符数。

这是错误的:

my $var = <STDIN>;
my $result = chomp ($var);  ### here, $result will have '1' and not the chomped string of <STDIN>

这是正确的:

my $var = <STDIN>;
chomp ($var);