お世話になります。
長~い文字列の、部分的削除を行いたいのですが、
例えば以下のようにすると、実行がとまってしまいます。

$pt_1 = index $html, @del_html[$count];
$pt_2 = index $html, @del_html[$count+1];
  ・
  ・
  ・
$cut_string = substr $html, $pt_1, $pt_2;

# 削除
$html =~ s/$cut_string//g;


・・・と、要点だけ書いてますが、こんな感じで部分的削除をしようとしてもできません。
途中2バイト文字が入ってるから、とか、置換対象が長すぎるから、とか色々原因が考えられるのですが、
どっちにしても、もうちょっとサマになるプログラミングはないでしょうか。
よろしく御願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

$pt_1及び$pt_2は必ず正しい結果が設定されているという前提でよいでしょうか。

その場合は、以下の様にしてください。
$cut_string = substr $html, $pt_1, $pt_2;
# 削除
$html =~ s/$cut_string//g;
のところを
$html = substr($html,0,$pt_1+1) . substr($html,$pt_2);
にしてください。
(OSはUnix(linux)で漢字コードはEUCコードであれば、正しく動作します)
上記の方法で解決しない場合は、念の為、以下の質問に回答ください。
1.$pt_1,$pt_2が正しく設定されない場合があり得るのか。
2.OSは何でしょうか。
3.Perlのバージョンは何でしょうか。
4.日本語対応のperl(JPERL)を使用していますか。
    • good
    • 0
この回答へのお礼

詳細な回答誠にありがとうございました。
おかげさまで無事解決しましたので、お礼申し上げます。
m(__)m

お礼日時:2003/11/03 01:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報