我想知道为什么我的字符串在这段代码之后按回车键仍然是空的:
$file = <>;
if ($file eq "") {
$file = "test.txt";
}
print "$file";
如果我输入任何内容,它会由 print 命令显示,但是当我按下回车键时,什么都不会打印出来。我想要的是让 perl 了解用户何时不输入任何内容并自动将字符串编辑为,在本例中为 test.txt。我究竟做错了什么?
谢谢!
我想知道为什么我的字符串在这段代码之后按回车键仍然是空的:
$file = <>;
if ($file eq "") {
$file = "test.txt";
}
print "$file";
如果我输入任何内容,它会由 print 命令显示,但是当我按下回车键时,什么都不会打印出来。我想要的是让 perl 了解用户何时不输入任何内容并自动将字符串编辑为,在本例中为 test.txt。我究竟做错了什么?
谢谢!
因为“输入”不等于没有——它等于\n
.
$file = <>;
if ($file eq "") {
$file = "test.txt";
}
print length($file);
运行这个,点击ENTER
,然后观察你得到 - 1!
尝试:
$file = <>;
if ($file eq "\n") {
$file = "test.txt";
}
print "$file";
请记住,\n
它不能跨系统移植。你真正想要的是这样的:
$file = <>;
if ($file =~ /^\s*$/) {
$file = "test.txt";
}
print $file;
匹配空白。
为了得到你想要的结果,你必须扼杀你的路线。
use strict;
use warnings;
chomp(my $file = <>); #remove newline. $file will have empty string if only a newline was entered.
if ($file eq "") {
$file = "test.txt";
}
print "$file\n";