dポイントプレゼントキャンペーン実施中!

perlの質問です。
フォームからデータをタブ区切りテキストファイルに保存する際、例えば「表示」ならエスケープシーケンスして「表\示」という保存がされます。

これについては問題ないと思うのですが、そのファイルから読込んで、テキストボックスに表示した際にも「表\示」と\付きで表示されてしまいます。

これを消すにはどのようにすればよいのでしょうか。
ちなみに読込んだ後で$data=~ s/\\//g;としたら、\は消えましたが今度は文字化けをおこします。あっちが解消されればこっちに問題発生という感じです。

A 回答 (3件)

すいません。

仕様を勘違いしていました。
独立した \ は消しちゃまずいですよね。

s/([\x81-\x9f\xe0-\xef]\\)\\/$1/g;

で、「表」(他にもありますが)に続いた\を消します。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/22 12:31

バージョンはコマンドプロンプトで perl -v とすれば確認できますよ。


で、5.005_03だとして話を進めます。多分jperlではないですよね。
これも perl -v で確認できるんですが。

プラットフォームはOSなどの環境を知りたかったのですが、ATHTTPDを
お使いということなので自動的にWindowsであることはわかりました。

で、対処方法ですが、ファイルから読み込んだ時点で余計な \ がついていて
表示する前にそれを取り除くということで、

  $data =~ s/([\x81-\x9f\xe0-\xef]\\)|\\/$1/g;

でどうでしょうか?
ファイルを保存するときにこの置換をやったほうがよいと思わないでもないんですが。
    • good
    • 0
この回答へのお礼

なるほど、ファイル保存の際に置きかえした方が、後処理でも余分なコードが必要ないのでそうします。

すいませんでした。質問にまともに答えられなくて・・・ちょっと別件で勉強になりました。

お礼日時:2006/06/22 12:31

まあ見当はつきますが…



使っているPerlのバージョンと種類、プラットフォーム、使用している
文字コード(ShiftJISでしょうけど)を明確にしていただけますか?

『テキストボックスに表示』とあるのでWindowsのそれか、cgiで
ブラウザーに表示させているとかと思いますがその辺もお願いします。

この回答への補足

Perlのバージョンですか?えぇっと・・・exeファイルの名前がPerl5.00503.exeとなってますからこの数字がバージョンでしょうか?

プラットフォーム???Webサーバーのことですか?
AN HTTP Daemon Ver1.41gです。

文字コードはShiftJISです。

なんか頼りなくてすいません。

補足日時:2006/06/21 13:12
    • good
    • 0

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