2017-04-17 140 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

相关问题