2

我试图弄清楚为什么当我尝试从用户那里获取输入时,chop 功能对我不起作用:

my $string = <STDIN>;
my $chr = chop($string);
print "String: $string\n";
print "Char: $chr\n";

输出

perl chop.pl
hello
String: hello
Char:

但是,如果我使用字符串,那么它可以工作!

my $string = "frong";
my $chr = chop($string);
print "String: $string\n";
print "Char: $chr\n";

输出 [583]

perl chop.pl
String: fron
Char: g
4

4 回答 4

4

当您从控制台传递输入时,chop正在切割newline字符串末尾的那个,当您点击Enter. 虽然您的字符串不包含该字符串。

于 2012-11-01T19:24:50.127 回答
0

你正在砍()'ing 是字符串末尾的换行符。要在从 STDIN 分配时删除换行符:

chomp(my $string = <STDIN>);

换句话说,你的程序应该是这样的:

chomp(my $string = <STDIN>);
my $chr = chop($string);
print "String: $string\n";
print "Char: $chr\n";
于 2012-11-01T20:02:48.827 回答
0

检查这两个函数的 perl 文档chopchomp可能就可以了。

chomp

chomp 这个更安全的 "chop" 版本删除了与 $/ 的当前值相对应的任何尾随字符串(在 "English" 模块中也称为 $INPUT_RECORD_SEPARATOR。

chop

砍掉字符串的最后一个字符并返回被砍掉的字符。

希望这有帮助

于 2012-11-01T21:55:15.620 回答
0

如果您正在打印诊断以显示变量内容,请在它们周围放置某种形式的分隔符,然后您会在 $chr 示例中看到换行符。

例如。

print "String: \"$string\"\n";
print "Char: \"$chr\"\n";
于 2013-10-02T13:58:25.093 回答