人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Windows版のPerl(v5.8.4)で、encoding のモジュールを使うと、¥n の改行コードが ¥x0A に 変わってしまいます。
元に戻す方法をご存知ありませんか?
サンプルのコードは、下記の次の2行ですが、use encoding の行を削除すると、改行コードは、¥x0D¥x0A に戻ります。
#============================
use encoding ”cp932”;
print ”Hello¥nWorld¥n”;
#============================

●質問者: tobehen
●カテゴリ:コンピュータ
✍キーワード:Hello Perl print Windows コード
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ycyc
●25ポイント

http://www.hatena.ne.jp/

はてな

URLはダミーです。


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


use encoding ”cp932”;

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

sub printLine {

local($line) = @_;

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

print $line;

}

◎質問者からの返答

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

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

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

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


2 ● is907
●25ポイント

http://namazu.org/~tsuchiya/perl/info/perl-ja_68.html#SEC68

The Perl5 Manual - 定義済み変数

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


$/ = ”¥x0D¥x0A”;


とか。

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

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ