• ベストアンサー

ファイルから読込んだ文字列から\を消したい

perlの質問です。 フォームからデータをタブ区切りテキストファイルに保存する際、例えば「表示」ならエスケープシーケンスして「表\示」という保存がされます。 これについては問題ないと思うのですが、そのファイルから読込んで、テキストボックスに表示した際にも「表\示」と\付きで表示されてしまいます。 これを消すにはどのようにすればよいのでしょうか。 ちなみに読込んだ後で$data=~ s/\\//g;としたら、\は消えましたが今度は文字化けをおこします。あっちが解消されればこっちに問題発生という感じです。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

すいません。仕様を勘違いしていました。 独立した \ は消しちゃまずいですよね。 s/([\x81-\x9f\xe0-\xef]\\)\\/$1/g; で、「表」(他にもありますが)に続いた\を消します。

souta_n
質問者

お礼

かさねがさね有難うございます。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

バージョンはコマンドプロンプトで perl -v とすれば確認できますよ。 で、5.005_03だとして話を進めます。多分jperlではないですよね。 これも perl -v で確認できるんですが。 プラットフォームはOSなどの環境を知りたかったのですが、ATHTTPDを お使いということなので自動的にWindowsであることはわかりました。 で、対処方法ですが、ファイルから読み込んだ時点で余計な \ がついていて 表示する前にそれを取り除くということで、   $data =~ s/([\x81-\x9f\xe0-\xef]\\)|\\/$1/g; でどうでしょうか? ファイルを保存するときにこの置換をやったほうがよいと思わないでもないんですが。

souta_n
質問者

お礼

なるほど、ファイル保存の際に置きかえした方が、後処理でも余分なコードが必要ないのでそうします。 すいませんでした。質問にまともに答えられなくて・・・ちょっと別件で勉強になりました。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

まあ見当はつきますが… 使っているPerlのバージョンと種類、プラットフォーム、使用している 文字コード(ShiftJISでしょうけど)を明確にしていただけますか? 『テキストボックスに表示』とあるのでWindowsのそれか、cgiで ブラウザーに表示させているとかと思いますがその辺もお願いします。

souta_n
質問者

補足

Perlのバージョンですか?えぇっと・・・exeファイルの名前がPerl5.00503.exeとなってますからこの数字がバージョンでしょうか? プラットフォーム???Webサーバーのことですか? AN HTTP Daemon Ver1.41gです。 文字コードはShiftJISです。 なんか頼りなくてすいません。

関連するQ&A