2017-04-17 142 views
1

我正在嘗試讀取文件並收集兩個哈希鍵之間的所有內容。我想訪問$ beginString和$ endString變量之間的所有內容。我已經嘗試了多個正則表達式,但一直未能找到工作。Perl讀取文件並在兩個字符串之間獲取字符串

my $beginString = "SEARCH"; 
my $endString = "TEST"; 


my $fileContent; 
open(my $fileHandler, $inputFile) or die "Could not open file '$inputFile' $!"; 
{ 
    local $/; 
    $fileContent = <$fileHandler>; 
} 
close($fileHandler); 



if($fileContent =~ /\b$beginString\b(.*?)\b$endString\b/){ 
    my $result = $1; 
    print $result; 
} 

print Dumper($fileContent); 
+0

如果要跨越多行'如果($ fileContent =〜/ \ B $ beginString \ B(您需要's'modifier 。*?)\ b $ endString \ b/s''''允許'dot'匹配換行符。 –

+0

謝謝!但它不是完整的解決方案。它做的是將所有內容都返回到$ endString,但是我仍然得到了$ beginString之前的所有內容 – victorz22

+0

提示:它被稱爲「文件句柄」(保存資源的東西),而不是「文件處理程序」(用於處理文件的東西) – ikegami

回答

0

the perl monks' solution的適應可能是..

my $beginString = "SEARCH"; 
my $endString = "TEST"; 

my $fileContent; 
open(my $fileHandler, $inputFile) or die "Could not open file '$inputFile' $!"; 
while(<$fileHandler>) { 
    if(/$beginString/../$endString/) { $fileContent .= $_ unless(/$beginString/ or /$endString/) } 
} 
close($fileHandler); 
print Dumper($fileContent); 
+0

感謝它工作 – victorz22

相關問題