【发布时间】:2017-09-13 09:27:43
【问题描述】:
我正在尝试读取文件并收集两个哈希键之间的所有内容。我想访问 $beginString 和 $endString 变量之间的所有内容。我已经尝试了多个正则表达式,但无法让其中一个起作用。
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);
【问题讨论】:
-
如果你想跨越多行,你需要
s修饰符if($fileContent =~ /\b$beginString\b(.*?)\b$endString\b/ss允许 `dot' 匹配换行符。 -
谢谢!但这不是完整的解决方案。它所做的是将所有内容返回到 $endString 但我仍然得到了 $beginString 之前的所有内容。
-
提示:它被称为“文件句柄”(保存资源的东西),而不是“文件处理程序”(处理文件的东西)。