作者: T.Watanabe
日時: 2006/5/01(09:13)
  ねこ丸です。

Bruce. wrote:

> Mac上といっても、Mac OS X で言えば普通のUnix用のものと
> 変わらないんじゃないかと思いますが(ねこ丸君よろしく)。
> OS X になるもののMacのサポートってまだありましたっけ?

  念のため確認ですが、ClassicMac と OSX はまったく別モノです。OSX 用の
Perl は普通の Un*x の Perl です。Classic 用の Perl は MacPerl という独自
の実装になります。

- http://www.macperl.com/
- http://sourceforge.net/projects/macperl/
- http://habilis.net/macjperl/

  見たら MacPerl は 5.6 ベースのものは出てますね。(MacJPerl は 5.2 とい
うバージョンで、5.004 ベースで止まっている。)5.8 ベースのものは alpha
までで止まっています。いずれにしても 2002年の段階で実質終了していると見
て間違いないんじゃないでしょうか。


> おぼろげに頭の片隅に残っているのは、
> スクリプトで \n と書くと、テキスト上の \r になる。
> #その逆もあり?
> ということですが。

  青山さんの MacPerl 講座がどこかにあったような気がしていたのですが見つ
からなかったので落として動かしてみました。

  入出力ともに \r を改行として動きますね。
  具体的には

- 末尾で \n を出力すると \r になる
- デフォルトのレコードセパレータは \r

  \r\n のファイルをそのまま読んで(chopせずに) ^$ で囲んで吐き出す(こ
の際は \n を明示的に付加していない)と

^元の文字列0x0a$^0x0a元の文字列0x0a$^0x0a

  あれ?(^^;  \r が \n になってる?

  \r\n のファイルをそのまま読み込んで chop して ^$ で囲んで吐き出す(こ
の際は \n を明示的に付加していない)と

^元の文字列$^0x0a元の文字列$^0x0a

  うーむ。

  読み込む際は \r までを行として認識しているように見えます。chop すると
その \r がなくなります。ただし、chop せずにそのまま \r を吐き出すと \n
になっているように見えます。試しに

print "hoge\r";

  とすると hoge0x0a になります。

print "hoge\r\n";

  とすると、0x0a0x0a が出ますね。すると出力時には「MacPerl の認識する末
尾で」

\n → \r
\r → \n

  の変換が行われるようです。\r\n の出力は \r までで行が終了しているので
\r → \n の変換は行われるがそこに続く \n の \r への変換は行われない、と。

  なんだか難しいことしてますね。

# つか、いまどきこの情報は何の役に立つんだろう?

  Classic のサポートは Python の方が手厚いですよね、たぶん。2004年に
2.3.3 が出てますから。

--
    ねこ丸