は、おそらくこれは、何が必要です:
my $data = "Smth\nfile:///myfile\nstring\nsmthelse\n";
$data =~ s/(file:\/\/\/.*?)\n(.*?)\n/\% $1\n\% $2\n/s;
print $data
出力:
Smth
% file:///myfile
% string
smthelse
だから、あなたのような1つの文字列にファイルを読むことができます: my $str = join '', <$fh>
と、それを処理するためにs
キーで正規表現を行います単一の行として。 Read
EDIT:あなたは、すべての行で、あなたは私が上記したように述べた2行を変更したいのほか、いくつかのものを行う場合
は、あなたがそうすることができます。
...
$data =~ s/(file:\/\/\/.*?)\n(.*?)\n/\% $1\n\% $2\n/s;
$file_str = $1;
$afterfile_str = $2;
my @data_arr = split /\n/, $data;
for(@data_arr) {
# some code, perhaps using $file_str and $afterfile_str
print $fh_out $_ . "\n";
}
を*と*あなたが求めるパターンの末尾の境界をどのように定義できますか? –
@WiktorStribiżewさて、後続境界は2行目の終わりになると思います。申し訳ありませんが、私は非常に多くの正規表現の初心者です... – jan
[OK]を、行ごとにデータを読み取っていますか?はいの場合は、2行を1パターンに一致させることはできません。 –