为什么我的字符串仍然是空的?

时间:2013-10-21 00:50:12

标签: perl

我想知道为什么我的字符串在这段代码后点击输入时仍然是空的:

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

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

谢谢!

2 个答案:

答案 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";