当我尝试从用户那里获取输入时,我试图找出为什么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
答案 0 :(得分:4)
当您从控制台传递输入时,chop
正在切断字符串末尾的newline
,当您点击Enter
时会出现该字符串。虽然你的字符串不包含它。
答案 1 :(得分:0)
你是什么()是字符串末尾的换行符。从STDIN分配时删除换行符:
chomp(my $string = <STDIN>);
换句话说,您的程序应如下所示:
chomp(my $string = <STDIN>);
my $chr = chop($string);
print "String: $string\n";
print "Char: $chr\n";
答案 2 :(得分:0)
检查这两个函数chop
和chomp
的perl文档可能就是这样。
chomp
chomp这个更安全的“chop”版本删除了任何尾随字符串 对应于$ /的当前值(也称为 “英语”模块中的$ INPUT_RECORD_SEPARATOR。
chop
chop砍掉字符串的最后一个字符并返回 字符切碎。
希望这个帮助
答案 3 :(得分:0)
如果您打印诊断程序以显示可变内容,请在它们周围放置某种形式的分隔符,然后在$ chr示例中看到换行符。
例如
print "String: \"$string\"\n";
print "Char: \"$chr\"\n";