我不知道为什么我的字符串仍然是空的时候才打这个代码后输入:为什么我的字符串仍然是空的?
$file = <>;
if ($file eq "") {
$file = "test.txt";
}
print "$file";
如果我在什么类型,它是由打印命令呈现,但是当我只需点击进入,什么都不是打印出来。我想要的是让perl了解何时用户什么都不输入,并自动编辑字符串,在这种情况下,是test.txt。我究竟做错了什么?
谢谢!
我不知道为什么我的字符串仍然是空的时候才打这个代码后输入:为什么我的字符串仍然是空的?
$file = <>;
if ($file eq "") {
$file = "test.txt";
}
print "$file";
如果我在什么类型,它是由打印命令呈现,但是当我只需点击进入,什么都不是打印出来。我想要的是让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;
匹配的空白。
为了得到你想要的结果你必须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";
非常感谢!我一直在坚持这个很长一段时间:P我甚至从来没有想过把输入作为\ n,只是认为它忽略了对输入的请求。正如你可能想到的,我是Perl的新手。我使用了$ file =〜/^\ s * $ /,它的工作方式与我想要的一样。谢谢! – Timmy
没问题,快乐的编码!请记住接受答案(绿色复选标记),如果这对您有帮助 - 它会让我更加无意义的互联网点:) –
如果您还有其他问题,请为此打开一个新问题 - 这不是正确的方法它。 –