Perl入门问题:判断空输入的IF语法实现
Perl入门问题:判断空输入的IF语法实现
嗨,我来帮你搞定这个小问题~你遇到的情况其实是Perl读取输入时的一个细节没注意到,咱们一步步来解决:
首先说问题根源:当你用<STDIN>读取终端输入时,Perl会把你输入的内容连带着最后按下的回车换行符一起存到变量里。比如你输入Hello然后回车,$input_line实际存储的是"Hello\n"(\n就是换行符),不是你以为的"Hello",所以你的判断条件会出错。另外你还混用了==(数值比较运算符)和eq(字符串比较运算符),==用来比字符串会把字符串强制转成数字,空字符串和非数字字符串都会转成0,这也会导致判断逻辑混乱。
接下来是解决方法:
- 第一步:读取输入后,用
chomp()函数去掉字符串末尾的换行符,这个函数专门用来处理这种输入后的换行问题。 - 第二步:只使用
eq来做字符串相等判断,不要用==,因为咱们是在判断字符串是否为空。
修正后的完整代码如下:
#!/usr/bin/perl # 初始化输入变量 $input_line = ""; # 获取终端输入 print "Input:"; $input_line = <STDIN>; # 去掉末尾的换行符 chomp($input_line); # 输出输入内容 print "Your input was: $input_line\n"; # 判断逻辑 if ($input_line eq "") { print "You have typed nothing!\n"; } else { print "Typing nothing is bad!\n"; }
现在测试一下:
- 当你输入
Hello回车,chomp后$input_line变成"Hello",不等于空字符串,程序会输出Typing nothing is bad! - 当你直接回车,
chomp后$input_line就是空字符串,程序会正确提示You have typed nothing!
备注:内容来源于stack exchange,提问作者user25867492
相关产品推荐
相关产品推荐

