我想知道为什么我的字符串在这段代码后点击输入时仍然是空的:
$file = <>;
if ($file eq "") {
$file = "test.txt";
}
print "$file";
如果我输入任何内容,则由打印命令显示,但是当我按下回车时,没有打印出任何内容。我想要的是让perl理解用户什么时候什么都不输入并自动编辑字符串,在本例中是test.txt。我做错了什么?
谢谢!
答案 0 :(得分:6)
因为“输入”不等于任何东西 - 它等于\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;
匹配空格。
答案 1 :(得分:3)
要获得您想要的结果,您必须 chomp 您的行。
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";