Perl读取文件并在两个字符串之间获取字符串
问题描述:
我正在尝试读取文件并收集两个哈希键之间的所有内容。我想访问$ 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);
答
的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
如果要跨越多行'如果($ fileContent =〜/ \ B $ beginString \ B(您需要's'modifier 。*?)\ b $ endString \ b/s''''允许'dot'匹配换行符。 –
谢谢!但它不是完整的解决方案。它做的是将所有内容都返回到$ endString,但是我仍然得到了$ beginString之前的所有内容 – victorz22
提示:它被称为“文件句柄”(保存资源的东西),而不是“文件处理程序”(用于处理文件的东西) – ikegami