07/05/01 17:38:05
ファイル内の文字列を置換するスクリプトを書いているところなのですが、
「置換する」「置換しない」(飛ばす)「残り全て置換」「キャンセル」という
処理を行うにあたって、見つけた文字列を置換せずに飛ばして次を置換する
方法が思いつきません。置換しないテキストは適当な文字列に置換しておいて
最後に戻すという方法も考えたのですが、あまりスマートではないと思いまし
た。何かよい方法があったら、お知恵をお貸しください。
while($text =~ /($regexp)/) {
if($all == 0) {
$before = $1;
$after = $1;
$after =~ s/$regexp/$replace/m;
print "置換前:\n$before\n置換後:\n$after\n";
do {
print "置換する? [y]es [n]o [a]残り全て [g]キャンセル ";
$key = <STDIN>;
chomp($key);
} while ($key ne "y" and $key ne "n" and $key ne "a" and $key ne "g");
if($key eq "y"){
$text =~ s/$regexp/$replace/m;
}elsif($key eq "n"){
# ここをどうする?
}elsif($key eq "a"){
$text =~ s/$regexp/$replace/gm;
$all = 1;
}else{ exit; }
}elsif($all == 1) {
$text =~ s/$regexp/$replace/gm;
}
}