2017-04-17 9 views
1

ファイルを読み込み、2つのハッシュキーの間にすべてを集めようとしています。 $ beginString変数と$ endString変数の間のすべてにアクセスしたいと思います。私は複数の正規表現を試しましたが、動作させることができませんでした。あなたは( `IF($含むFileContent =〜/ \ $ B beginString \ bを複数行にまたがるする場合Perlがファイルを読み込んで2つの文字列の間に文字列を取得する

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

あなたは' s'modifierを必要とします。*?)\ b $ endString \ b/s'''''が '' dot ''を改行にマッチさせることができます。 –

+0

ありがとうございました!しかし、それは完全な解決策ではありませんでした。 – 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

関連する問題