Windows版のPerl(v5.8.4)で、encoding のモジュールを使うと、¥n の改行コードが ¥x0A に 変わってしまいます。

元に戻す方法をご存知ありませんか?
サンプルのコードは、下記の次の2行ですが、use encoding の行を削除すると、改行コードは、¥x0D¥x0A に戻ります。
#============================
use encoding ”cp932”;
print ”Hello¥nWorld¥n”;
#============================

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/05/16 12:00:48
  • 終了:--

回答(2件)

id:ycyc No.1

ycyc回答回数37ベストアンサー獲得回数62005/05/16 16:37:00

ポイント25pt

URLはダミーです。


改行コードを変えたいだけなら、¥x0Aを¥x0D¥x0Aに変えればよいのでは?


use encoding ”cp932”;

&printLine(”Hello¥nWorld¥n”);

sub printLine {

local($line) = @_;

$line =~ s/[^¥x0d]¥x0a/¥x0d¥x0a/g;

print $line;

}

id:tobehen

情報ありがとうございます。

出力時だけの問題だけならご指摘のように関数でも作って処理すれば問題ないのですが、文字処理の中でも同様の問題が発生します。

PerlではOSの環境に合わせて改行コードが変わるのが仕様だと思っていましたが、use encodeing ”xxxx” を 使うと 変わってしまいます。

デフォルトで¥nをWindowsの改行コードに戻す方法をご存知ありませんか?

2005/05/17 10:36:19
id:is907 No.2

is907回答回数7ベストアンサー獲得回数02005/05/20 21:33:48

ポイント25pt

インプットレコードセパレーターの値をいじるとどうでしょうか?同じ環境が無いので試せないのですが申し訳ありません。


$/ = ”¥x0D¥x0A”;


とか。

encoding モジュールのソースを覗いて ¥x0A で検索すると分かるかもしれません。

id:tobehen

情報ありがとうございます。

でも、入力時のレコード区切り文字である $/ や

出力時の行末文字である $¥ を修正しても変わりません。

2005/05/23 10:41:55

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません