• ベストアンサー

ファイル出力の改行コードをLFに

また質問です。よろしくお願いいたします。 WindowsXPでperl5.8.7の環境です。 出力したファイルの文字コードをEUC、改行コードをLFで出力をしようとしています。 なお入力、出力ファイルには日本語が含まれています。 文字コードは希望通りいくのですが改行コードがうまくいきません。 Windowsのデフォルト改行コードCR+LFが出力されてしまいます。 (Terapad(エディタ)の改行コード表示がこうなっています。) (1)binmode(OUT);で行うと、 Wide character in print at jisyo01.pl line 63, <IN> line 97. というエラーが表示され、出力されない。 (2)$xxx[$i] =~ s/\x0D\x0A/\x0A/g; で改行コードを置換しようとしても、置換されず、 CR+LFである。 (3)$/ = pack("C", hex("A"));で 改行コードをchompした後、print OUT "$/";としても、 CR+LFのままである。 上手くいきません。いい方法ないでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#こんな感じでどうでしょう use encoding 'UTF-8'; open(IN, "<:crlf:encoding(shiftjis)", "SJIS.TXT"); open(OUT,">:unix:encoding(euc-jp)","EUC.TXT"); while(<IN>){ print OUT; } close(OUT); close(IN);

Achilles1993
質問者

お礼

BLUEPIXYさん.たびたび申し訳ありません. 出来ました.本当にありがとうございます. この質問自体は終わりなのですが,もう一つよろしいでしょうか(すみません). ちょっと違う質問をしますが,BLUEPIXYさんは このような文字コード変換において,どのような 本またはホームページを参照しているのでしょうか. 私も本格的に学びたいため教えていただけないでしょうか. もしよろしければでいいので,よろしくお願いいたします.

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>どのような本またはホームページを参照しているのでしょうか. 私の場合で言うと、 文字コード変換(5.8からは便利になりました^^)云々に限らずに、Perlに関して言えば、 「Perlクックブック」オライリー・ジャバン がバイブルです。 いわゆるレシピブックです。 簡単な参照には、 「新Perlの国へようこそ」サイエンス社 を使っています。あまり分厚くなくて(分厚いと参照が大変)、良くまとめられています。) 私は、線が細い(64K)ので(やたらヒットしても大変;;)、ホームページ上を検索することはほとんどありませんが、 ActiveStateのActivePerlを使っているので、 http://aspn.activestate.com/ASPN/docs/ActivePerl は、参照することがあります。

Achilles1993
質問者

お礼

ありがとうございます. 参考にさせていただきます.

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2の :unix は、 :raw の方が良いかも知れません。

  • guci-ok
  • ベストアンサー率33% (49/146)
回答No.1

私はエラーになりませんでした。 結果は、バイナリエディタで確認しました。 #!Perl use strict; use NKF; open(OUT, ">out.txt") or die; binmode OUT; while (<>) { print OUT nkf("-e",$_); } __EOD__

Achilles1993
質問者

お礼

返信遅れました.ありがとうございます. NKFモジュールというのがあるんですね. 知りませんでした. ただWindows環境でcygwinは用いない為, 上のBLUEPIXYさんの方法を用いたいと思います. ありがとうございました.

関連するQ&A