2013-10-21 35 views
1

我不知道为什么我的字符串仍然是空的时候才打这个代码后输入:为什么我的字符串仍然是空的?

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

如果我在什么类型,它是由打印命令呈现,但是当我只需点击进入,什么都不是打印出来。我想要的是让perl了解何时用户什么都不输入,并自动编辑字符串,在这种情况下,是test.txt。我究竟做错了什么?

谢谢!

+0

非常感谢!我一直在坚持这个很长一段时间:P我甚至从来没有想过把输入作为\ n,只是认为它忽略了对输入的请求。正如你可能想到的,我是Perl的新手。我使用了$ file =〜/^\ s * $ /,它的工作方式与我想要的一样。谢谢! – Timmy

+0

没问题,快乐的编码!请记住接受答案(绿色复选标记),如果这对您有帮助 - 它会让我更加无意义的互联网点:) –

+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; 

匹配的空白。

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"; 
相关问题