• ベストアンサー

改行コード変換…

今、ソケットを用いたメール送信プログラムを作成していて、以下のページを 参考にプログラムを組んでいるのですが、次の意味が分かりません。 どなたかご存知の方がいらっしゃいましたら教えて頂きたいのですが。 # -------------------- # 改行コード変換 # -------------------- sub decode{ my $inf = $_[0]; $$inf =~ s/\x0D\x0A|\x0D|\x0A/\n/g; #←特にこの行が } 『Knave Web講座』"http://www.site-cooler.com/kwl/perl/smtp.htm#perl"より

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

  • ベストアンサー
回答No.2

コンピュータで使われている改行コードは、 \x0D \x0A (windows系) \x0A (Linux系) \x0D (Macintosh系) の3種類があります。 これを一括して論理的な改行記号"\n"に置き換える部分が 件の行です。 その行の元になっている解説はこちらです↓ 私の説明より分かりやすく書かれています。

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm#CRLF_Unify
mintea86
質問者

お礼

素早い回答ありがとうございました。 解決しました。

その他の回答 (3)

  • jikenjp
  • ベストアンサー率38% (5/13)
回答No.4

それがし、"perl" ど素人のため、良くしりませぬー。ごめんね。 16進の改行表現、今知りました。馴染のある オクタル表現で、すこし遊んでみました。(私のマシン "Linux" のため、元は "LF" だす) #!/usr/bin/perl while(<>){ $_ =~ s/\012/\015/g; #LF(ラインフィード) を C/R に変更 if($_ =~s/\015\012//g){ #Windows だったら print $_, " C/R + LF\n"; } elsif($_ =~ s/\012//g){ #Linux/UNIX だったら print $_, " LF だけ\n"; } elsif($_ =~ s/\015//g){ #Mac だったら print $_, " C/R だけ\n"; } } つまらなすぎて、ごめんね!?

mintea86
質問者

お礼

素早い回答ありがとうございました。

  • investyou
  • ベストアンサー率23% (13/56)
回答No.3

改行コード変換はたぶんperl内部における文字コード変換なんかの過程でしょう。 後は蛇足と言うか参考までに。 >今、ソケットを用いたメール送信プログラムを作成していて、 ソケットを使用しなければいけませんか? メール送受信なら用意されたperlモジュールをオススメします。 http://homepage3.nifty.com/hippo2000/perltips/perlmail.htm ソケット生成して、順番待ちして・・などとやるよりは簡単ですからね。。 kentwebさんの方が詳しいですが、ソケットならこっちも参考になりますよ。 http://www.7key.jp/program/perl/study2.html

mintea86
質問者

お礼

素早い回答ありがとうございました。 参考になりました。

回答No.1

 CRLF または、CR または LF が対象文字列にあったら、 \n に変換しているでは。    下記参考です。  http://seclan.dll.jp/cccrlf.htm  

参考URL:
http://seclan.dll.jp/cccrlf.htm
mintea86
質問者

お礼

素早い回答ありがとうございました。

関連するQ&A