###前提実現したいこと
perlでhoge.txtのデータの一部を置換してhogehoge.txtにコピーしたいと考えています。
hoge.txtの中身
<ccc> abcdefg </yyy> <aaa> ABCDEFG </xxx> <ccc> abcdefg </yyy> <aaa> ABCDEFG </xxx>hoge.txtの
<aaa>の範囲から</xxx>の範囲までを指定しコピーする。
それ以外は、NEXTでとばしたいと考えています。
hogehoge.txt
<bbb> ABCDEFG </zzz> <bbb> ABCDEFG </zzz>イメージですが、このようにしたいです。
###発生している問題・エラーメッセージ
hoge.txtの
<aaa>の範囲から</xxx>の範囲までをコピ-したいのですが、
現状<aaa>の部分から、一番下の</xxx>まで書きだしてしまってる問題があります。
下記の文で範囲をしていしてしまっているためだと思います。
if($line = /\aaa>/ .. /</xxx>/)
現状hogehoge.txtの中身
<bbb> ABCDEFG </zzz> <ccc> abcdefg </yyy> <bbb> ABCDEFG </zzz>###該当のソースコード
#!/usr/bin/perl
use utf8;
use strict;
open(IN,"<","hoge.txt");
open(OUT,">>","hogehoge.txt")or die"error:$!";
while (my $line = <IN>) {
if($line = /\aaa>$/ .. /</xxx>$/){
$line = ~s/<aaa>/^<bbb>/g;
$line = ~s/</xxx>/</zzz>/g;
print OUT $line;
}else{
next
}
}
close(IN);
close(OUT);
###試したこと
開始値、終了値やフラグをなど調べてみましたが私の理解が足りず力不足でした。
###補足情報(言語/FW/ツール等のバージョンなど)
言語 perl
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/11 11:33