アプリ版:「スタンプのみでお礼する」機能のリリースについて

また質問です。よろしくお願いいたします。

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のままである。

上手くいきません。いい方法ないでしょうか。
よろしくお願いいたします。

A 回答 (4件)

#こんな感じでどうでしょう


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);
    • good
    • 0
この回答へのお礼

BLUEPIXYさん.たびたび申し訳ありません.
出来ました.本当にありがとうございます.

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

お礼日時:2005/10/24 12:14

>どのような本またはホームページを参照しているのでしょうか.


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

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

お礼日時:2005/10/24 15:18

#2の


:unix
は、
:raw
の方が良いかも知れません。
    • good
    • 0

私はエラーになりませんでした。


結果は、バイナリエディタで確認しました。

#!Perl
use strict;
use NKF;
open(OUT, ">out.txt") or die;
binmode OUT;
while (<>) {
print OUT nkf("-e",$_);
}
__EOD__
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/24 12:08

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