ねこ丸です。
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 が出てますから。
--
ねこ丸