2014-08-29 16 views
0

我從一個文件/ STDIN閱讀和查找某個特定值:爲什麼我的文件內容/用戶輸入不匹配? (缺少格格規範)

use strict; 
use warnings; 

my $find = 'def';  
while (<DATA>) { 
    if ($_ eq $find) { 
     print "Found: $_\n"; # Never reached! 
    } 
} 

__DATA__ 
abc 
def 
xyz 

爲什麼條件從不匹配?

+4

如果有人知道一個已經存在的,一般的「忘了我終日啃食輸入」的問題,可隨時舉報此重複。 – RobEarl 2014-08-29 15:54:50

+1

這種類型的問題很難找到一個規範的副本。 OP很少有線索發生錯誤,所以他們的標題/問題當然不會提及chomp或line結尾。 – Miller 2014-08-29 19:47:52

回答

2

Data::Dumper可用於更仔細地檢查變量:

use Data::Dumper; 
local $Data::Dumper::Useqq = 1; 

print Dumper $_, $find; 

輸出,例如

$VAR1 = "def\n"; 
$VAR2 = "def"; 

您必須刪除\n字符<DATA>讀入$_。做到這一點最簡單的方法是chomp功能

use strict; 
use warnings; 

my $find = 'def';  
while (<DATA>) { 
    chomp; 
    if ($_ eq $find) { 
     print "Found: $_\n"; # Never reached! 
    } 
} 

__DATA__ 
abc 
def 
xyz 
相關問題