1

我想知道为什么我的字符串在这段代码之后按回车键仍然是空的:

$file = <>;
if ($file eq "") {
$file = "test.txt";
}
print "$file";

如果我输入任何内容,它会由 print 命令显示,但是当我按下回车键时,什么都不会打印出来。我想要的是让 perl 了解用户何时不输入任何内容并自动将字符串编辑为,在本例中为 test.txt。我究竟做错了什么?

谢谢!

4

2 回答 2

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;

匹配空白。

于 2013-10-21T00:53:25.657 回答
3

为了得到你想要的结果,你必须扼杀你的路线。

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";
于 2013-10-21T01:18:41.753 回答