From okabek @ beige.ocn.ne.jp Thu Aug 26 05:00:48 2004 From: okabek @ beige.ocn.ne.jp (Keiichi Okabe) Date: Thu Aug 26 05:01:52 2004 Subject: [Tokyo-pm] =?iso-2022-jp?b?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= Message-ID: <22C48B53900D55okabek@beige.ocn.ne.jp> 岡部です. 早川さんのlslR.pl スクリプトを見ていて,動きがよく わからない箇所があります. http://www014.upp.so-net.ne.jp/tetryl/llw2004/ sub init_sh { my $fname = shift; local $/ = ""; open my $fh, $fname or die $!; %lslr = map {sub {substr(shift,0,-1), \@_}->(split /\n/)} <$fh>; } という箇所なんですが,ls -lR で作成したファイルをハッシュに いれようとしていると思うのですが,最後の行はどう動くのでしょうか. 教えてくださいませ. # う〜ん,私がやらなくてよかった,って感じ. # 難しいや (^^; -- okabek@beige.ocn.ne.jp 岡部 恵一 成功出於衆者、先知也、先知者、必取於人、知敵之情者也 孫子 用間篇 第十三 From miyagawa @ edge.co.jp Thu Aug 26 05:26:51 2004 From: miyagawa @ edge.co.jp (Tatsuhiko Miyagawa) Date: Thu Aug 26 05:27:00 2004 Subject: [Tokyo-pm] =?ISO-2022-JP?B?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <22C48B53900D55okabek@beige.ocn.ne.jp> References: <22C48B53900D55okabek@beige.ocn.ne.jp> Message-ID: <20040826192044.FA73.MIYAGAWA@edge.co.jp> 宮川です。 On Thu, 26 Aug 2004 19:00:48 +0900 Keiichi Okabe wrote: > sub init_sh > { > my $fname = shift; > local $/ = ""; > open my $fh, $fname or die $!; > %lslr = map {sub {substr(shift,0,-1), \@_}->(split /\n/)} <$fh>; > } > > という箇所なんですが,ls -lR で作成したファイルをハッシュに > いれようとしていると思うのですが,最後の行はどう動くのでしょうか. map も sub もつかわずに書くと、 sub init_sh { my $fname = shift; local $/ = ""; open my $fh, $fname or die $!; %lslr = (); for (<$fh>) { my @lines = split /\n/; my $head = substr(shift @lines, 0, -1); $lslr{$head} = \@lines; } } つまり foo: a b c bar: d e f ってのを、 %lslr = ( foo => [ "a", "b", "c" ], bar => [ "d", "e", "f" ], ); っていうハッシュにしてるのですね。 -- Tatsuhiko Miyagawa From okabek @ beige.ocn.ne.jp Thu Aug 26 06:48:25 2004 From: okabek @ beige.ocn.ne.jp (Keiichi Okabe) Date: Thu Aug 26 06:48:35 2004 Subject: [Tokyo-pm] Re: =?iso-2022-jp?b?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <20040826192044.FA73.MIYAGAWA@edge.co.jp> References: <20040826192044.FA73.MIYAGAWA@edge.co.jp> Message-ID: <25C48B629853E7okabek@beige.ocn.ne.jp> 岡部です.宮川さん,ありがとうございます. 2004/08/26 の Tatsuhiko Miyagawa さんのメール <20040826192044.FA73.MIYAGAWA@edge.co.jp> を引用しています. >> %lslr = map {sub {substr(shift,0,-1), \@_}->(split /\n/)} <$fh>; >map も sub もつかわずに書くと、 こちらはわかりました.で,自分が混乱していたのは > my $head = substr(shift @lines, 0, -1); この部分です.これが sub {substr(shift,0,-1), \@_} になるわけですよね.なんで@_じゃないのかな,という ところから混乱を起こしました.でもなんで \@_に なるんでしょう.何を見ればわかるでしょうか? -- okabek@beige.ocn.ne.jp 岡部 恵一 成功出於衆者、先知也、先知者、必取於人、知敵之情者也 孫子 用間篇 第十三 From miyagawa @ edge.co.jp Thu Aug 26 06:58:36 2004 From: miyagawa @ edge.co.jp (Tatsuhiko Miyagawa) Date: Thu Aug 26 06:58:44 2004 Subject: [Tokyo-pm] Re: =?ISO-2022-JP?B?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <25C48B629853E7okabek@beige.ocn.ne.jp> References: <20040826192044.FA73.MIYAGAWA@edge.co.jp> <25C48B629853E7okabek@beige.ocn.ne.jp> Message-ID: <20040826205502.FA76.MIYAGAWA@edge.co.jp> 宮川です。 On Thu, 26 Aug 2004 20:48:25 +0900 Keiichi Okabe wrote: > > my $head = substr(shift @lines, 0, -1); > > この部分です.これが > > sub {substr(shift,0,-1), \@_} > > になるわけですよね. いえ、これ($head) はカンマ(,) の左側です。 右側(\@_)が、残りの配列のリファレンスです。 > なんで@_じゃないのかな,という > ところから混乱を起こしました.でもなんで \@_に > なるんでしょう.何を見ればわかるでしょうか? 2文にすると、 sub { my $head = substr(shift, 0, -1); return ($head => \@_); }; こうなります。 -- Tatsuhiko Miyagawa From tetryl @ tokyoprogrammer.com Thu Aug 26 08:53:48 2004 From: tetryl @ tokyoprogrammer.com (Shinya Hayakawa) Date: Thu Aug 26 08:53:51 2004 Subject: [Tokyo-pm] =?iso-2022-jp?b?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <20040826192044.FA73.MIYAGAWA@edge.co.jp> References: <22C48B53900D55okabek@beige.ocn.ne.jp> <20040826192044.FA73.MIYAGAWA@edge.co.jp> Message-ID: <200408262253.48174.tetryl@tokyoprogrammer.com> こんにちは。早川です。 -- 管理者様すみません。。再送です せっかくなのでベンチマーク取ってみました。 use strict; use Benchmark; my $fname = 'ls-lR.txt'; timethese( -3, { normal => sub { local $/ = ""; open my $fh, $fname or die; my %lslr = map {sub {substr(shift,0,-1), \@_}->(split /\n/)} <$fh>; } , redundant => sub { local $/ = ""; open my $fh, $fname or die; my %lslr = (); for (<$fh>) { my @lines = split /\n/; my $head = substr(shift @lines, 0, -1); $lslr{$head} = \@lines; } } } ); Benchmark: running normal, redundant for at least 3 CPU seconds... normal: 4 wallclock secs ( 3.06 usr + 0.11 sys = 3.17 CPU) @ 2943.53/s (n=9331) redundant: 4 wallclock secs ( 3.17 usr + 0.09 sys = 3.26 CPU) @ 2512.27/s (n=8190) 1行が6行になったからといって それほど冗長さは感じられませんが (^^; 前者の方が効率はいいみたいですね。 はじめはsubstrが無くて以下のようなコードだったのですが これは見た目的に、とても美しいと感じました。 %lslr = map {sub {shift, \@_}->(split /\n/)} <$fh>; なにはさておき、このようなコードを可能にした $/変数は素晴らしいと思います。 -- Shinya Hayakawa hayakawa@livedoor.jp From tetryl @ tokyoprogrammer.com Thu Aug 26 09:01:50 2004 From: tetryl @ tokyoprogrammer.com (Shinya Hayakawa) Date: Thu Aug 26 09:01:54 2004 Subject: [Tokyo-pm] Re: =?iso-2022-jp?b?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <25C48B629853E7okabek@beige.ocn.ne.jp> References: <20040826192044.FA73.MIYAGAWA@edge.co.jp> <25C48B629853E7okabek@beige.ocn.ne.jp> Message-ID: <200408262301.50950.tetryl@tokyoprogrammer.com> 早川です。 On 2004 8月 26 木曜日 8:48 午後, Keiichi Okabe wrote: > sub {substr(shift,0,-1), \@_} > > になるわけですよね.なんで@_じゃないのかな,という > ところから混乱を起こしました.でもなんで \@_に > なるんでしょう.何を見ればわかるでしょうか? my 変数と同様に、参照カウントを増やすことで スコープを抜けた後も、中身が解放されない事を利用してます。 実装上は問題ないはずですが これって違法でしたっけ。 -- Shinya Hayakawa hayakawa@livedoor.jp From okabek @ beige.ocn.ne.jp Thu Aug 26 09:29:05 2004 From: okabek @ beige.ocn.ne.jp (Keiichi Okabe) Date: Thu Aug 26 09:31:16 2004 Subject: [Tokyo-pm] Re: =?iso-2022-jp?b?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <200408262301.50950.tetryl@tokyoprogrammer.com> References: <200408262301.50950.tetryl@tokyoprogrammer.com> Message-ID: <2BC48B790AA6F8okabek@beige.ocn.ne.jp> 岡部です. 2004/08/26 の Shinya Hayakawa さんのメール <200408262301.50950.tetryl@tokyoprogrammer.com> を引用しています. >my 変数と同様に、参照カウントを増やすことで >スコープを抜けた後も、中身が解放されない事を利用してます。 >実装上は問題ないはずですが >これって違法でしたっけ。 宮川さんのメールで納得できました.問題なければ違法じゃないっしょ. |電柱|ー ̄) 隠れニヤリ ありがとうございます. -- okabek@beige.ocn.ne.jp 岡部 恵一 成功出於衆者、先知也、先知者、必取於人、知敵之情者也 孫子 用間篇 第十三 From okabek @ beige.ocn.ne.jp Thu Aug 26 09:25:54 2004 From: okabek @ beige.ocn.ne.jp (Keiichi Okabe) Date: Thu Aug 26 09:31:24 2004 Subject: [Tokyo-pm] Re: =?iso-2022-jp?B?GyRCJDMkbCRPJEkkJkYwJC8kThsoQg==?= =?iso-2022-jp?B?GyRCISkbKEI=?= In-Reply-To: <20040826205502.FA76.MIYAGAWA@edge.co.jp> References: <20040826205502.FA76.MIYAGAWA@edge.co.jp> Message-ID: <29C48B78987866okabek@beige.ocn.ne.jp> 岡部です. 2004/08/26 の Tatsuhiko Miyagawa さんのメール <20040826205502.FA76.MIYAGAWA@edge.co.jp> を引用しています. >いえ、これ($head) はカンマ(,) の左側です。 >右側(\@_)が、残りの配列のリファレンスです。 あぁ〜,そうか. C:>perl -e "%s = sub{substr(shift,0,-1), \@_}->(qw(ab cd ef)); map{print $_,qq{,}}(@{$s{a}})" cd,ef, となるわけですね.納得です.ありがとうございました. -- okabek@beige.ocn.ne.jp 岡部 恵一 成功出於衆者、先知也、先知者、必取於人、知敵之情者也 孫子 用間篇 第十三 From dankogai @ dan.co.jp Thu Aug 26 10:41:02 2004 From: dankogai @ dan.co.jp (Dan Kogai) Date: Thu Aug 26 10:41:07 2004 Subject: =?ISO-2022-JP?B?UmU6IFtUb2t5by1wbV0gUmU6IBskQiQzJGwkTyRJJCYbKEI=?= =?ISO-2022-JP?B?GyRCRjAkLyROISkbKEI=?= In-Reply-To: <200408262301.50950.tetryl@tokyoprogrammer.com> References: <20040826192044.FA73.MIYAGAWA@edge.co.jp> <25C48B629853E7okabek@beige.ocn.ne.jp> <200408262301.50950.tetryl@tokyoprogrammer.com> Message-ID: <5603AD70-F776-11D8-96BA-000A95DBB50A@dan.co.jp> 弾です。 それにしても早川君って「モツ好き」だよなあ.... On Aug 26, 2004, at 23:01, Shinya Hayakawa wrote: > On 2004 8月 26 木曜日 8:48 午後, Keiichi Okabe wrote: >> sub {substr(shift,0,-1), \@_} >> >> になるわけですよね.なんで@_じゃないのかな,という >> ところから混乱を起こしました.でもなんで \@_に >> なるんでし >> ょう.何を見ればわかるでしょうか? > > my 変数と同様に、参照カウントを増やすことで > スコープを抜けた後も、中身が解放されない事を利用してます。 え?この場合は、REFCNTは関係ないはず。以下を実行してみて実際のref countを確認してみてください。 perl -MDevel::Peek -le '@a=qw/a b c/; sub a{ \@_ }; $b=a(@a);Dump $b' $b のREFCNTは1のまま。@$bのREFCNTも1のまま。というか1で充分。 #ただし、$b->[]の各要素のSVのref countは1づつ上がる。 #うむむ、むしろこちらの方が不(思議|可解)だ! むしろこれがうまく行く理由は、@_そのものが、引数へのreferenceのarrayだから。機能的には、 sub { my $s = shift; substr($s,0,-1) => [ @_ ] } と同じだけど、こちらの場合には、@_ の中身はコピーされるのに対し、早川版では split(/\n/) の結果のtemp arrayがそのまま用いられ、それが捨てられずに残るのです。 > 実装上は問題ないはずですが > これって違法でしたっけ。 Perlの世界ではなかなか違反切符を切られる事はないので、この場合も動く(よね?自分で確認してないので)のではあるけど、夜中の首都高でハコ乗り するぐらいコワい。 特にコワいのは、 substr(shift,0,-1), @_; では同一statementで@_の内容を変更していること。shiftと@_とどっちが先に評価されるかというのはCでは未定義なんだよね(K&R pp. 52)。perlでも明示的に定義はしてなかったように思うが、今のところどのplatformでもshiftの方が先に評価されるみたい。だけどCは そうは行かない。 #include int inc(int *a){ return ++*a; } main(){ int b = 0; printf("%d%d\n", inc(&b), inc(&b)); } の結果と perl -le 'sub inc{++$$_[0]}; $b=1; print inc(\$b), inc(\$b)' の結果を比べると。perlでは一貫して"01"ですが、Cだと同じGCCでもFreeBSD 4では(-Oとかなしで)"21"、MacOS X v10.3では"12"と逆ぶっこいてくれちゃいます。 Dan the Dirty Old Man From tetryl @ tokyoprogrammer.com Thu Aug 26 20:58:41 2004 From: tetryl @ tokyoprogrammer.com (Shinya Hayakawa) Date: Thu Aug 26 20:58:48 2004 Subject: [Tokyo-pm] Re: =?iso-2022-jp?b?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <5603AD70-F776-11D8-96BA-000A95DBB50A@dan.co.jp> References: <20040826192044.FA73.MIYAGAWA@edge.co.jp> <200408262301.50950.tetryl@tokyoprogrammer.com> <5603AD70-F776-11D8-96BA-000A95DBB50A@dan.co.jp> Message-ID: <200408271058.42591.tetryl@tokyoprogrammer.com> こんにちは。早川です。 On 2004 8月 27 金曜日 12:41 午前, Dan Kogai wrote: > それにしても早川君って「モツ好き」だよなあ.... モツ?...あぁ、gutsってことですね(^^; > > my 変数と同様に、参照カウントを増やすことで > > スコープを抜けた後も、中身が解放されない事を利用してます。 > > え?この場合は、REFCNTは関係ないはず。以下を実行してみて実際のref countを確認してみてください。 > > perl -MDevel::Peek -le '@a=qw/a b c/; sub a{ \@_ }; $b=a(@a);Dump $b' > > $b のREFCNTは1のまま。@$bのREFCNTも1のまま。というか1で充分。 いえ、Dumpする場所を追加すると, perl -MDevel::Peek -le '@a=qw/a b c/; sub a{Dump \@_; \@_ }; $b=a(@a);Dump $b' REFCNTは3に増えている事が分かります。 @_ 自身はスクラッチパッド上に確保されるので 保存の仕組みはクロージャと全く同じですよね。 > #ただし、$b->[]の各要素のSVのref countは1づつ上がる。 > #うむむ、むしろこちらの方が不(思議|可解)だ! 引数スタックに積まれる時にcountが上がるのでしたっけ。 後で調べてみます。 > 特にコワいのは、 > > substr(shift,0,-1), @_; > > では同一statementで@_の内容を変更していること。shiftと@_とどっちが先に評価されるかというのはCでは未定義なんだよね(K&R > pp. > 52)。perlでも明示的に定義はしてなかったように思うが、今のところどのplatformでもshiftの方が先に評価されるみたい。だけどCは > そうは行かない。 あっ、でも自分の場合は@_のリファレンスを使ってるだけだから shiftが実行されるのは先でも後でも問題なかったですね。 -- 今気づいた(^^; -- Shinya Hayakawa hayakawa@livedoor.jp From tetryl @ tokyoprogrammer.com Thu Aug 26 21:12:14 2004 From: tetryl @ tokyoprogrammer.com (Shinya Hayakawa) Date: Thu Aug 26 21:12:18 2004 Subject: [Tokyo-pm] Re: =?iso-2022-jp?b?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <20040827.025733.260117099.utashiro@iij.ad.jp> References: <25C48B629853E7okabek@beige.ocn.ne.jp> <5603AD70-F776-11D8-96BA-000A95DBB50A@dan.co.jp> <20040827.025733.260117099.utashiro@iij.ad.jp> Message-ID: <200408271112.14067.tetryl@tokyoprogrammer.com> 早川です。 下のスレッドとLarryの投稿からすると、評価の順序は未定義なのでしょうか。 http://groups.google.com/groups?threadm=20030830171542.5579.qmail@plover.com http://groups.google.com/groups?threadm=20030301172639.GA29036%40wall.org ドキュメントとしては見つけられませんでした。 家に帰ったらラクダ本を見てみます。 On 2004 8月 27 金曜日 2:57 午前, Kazumasa Utashiro wrote: > > では同一statementで@_の内容を変更していること。shiftと@_とどっちが先に評価されるかというのはCでは未定義なんだよね(K&R > > pp. > > 52)。perlでも明示的に定義はしてなかったように思うが、今のところどのplatformでもshiftの方が先に評価されるみたい。だけどCは > > そうは行かない。 > > Perl の設計方針としては定義されていましたよ。今でも perlfaq8(1) には、 > > You'll also see code that does this without a temporary variable, > as in > > select((select(DEV), $| = 1)[0]); > > という常套句についての記述があるし、このコードが期待通りに動くことは、 > 少くとも version 2 の頃から保証されていたはずです。 > > 探せば、どこかにドキュメントされているだろうと思うし、もしなければドキュ > メントの不備なんじゃないですかね。 -- Shinya Hayakawa hayakawa@livedoor.jp From utashiro @ iij.ad.jp Fri Aug 27 01:18:14 2004 From: utashiro @ iij.ad.jp (Kazumasa Utashiro) Date: Fri Aug 27 01:18:19 2004 Subject: [Tokyo-pm] Re: =?iso-2022-jp?B?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <200408271112.14067.tetryl@tokyoprogrammer.com> References: <5603AD70-F776-11D8-96BA-000A95DBB50A@dan.co.jp> <20040827.025733.260117099.utashiro@iij.ad.jp> <200408271112.14067.tetryl@tokyoprogrammer.com> Message-ID: <20040827.151814.70227029.utashiro@iij.ad.jp> 変なアドレスから出しちゃったので、tokyo-pm には届かなかったみたい。す みません。早川さんのメールも届いていないのではないでしょうか。複数のメー リングリストに投げるのは混乱を招くように思います。ところで tokyoprogrammer.com って何なのでしょう? * * * どうしてわざわざややこしく書くんでしょうね :)。 The fact that Perl 5 doesn't define it is merely an oversight, brought on no doubt by a lack of oversight. Perl 5 の仕様として盛り込まなかったのは、単なる見落とし (oversight) であって、その原因は管理 (oversight) の不行届きであ る。 って意味しょうか。やっぱりドキュメンテーションの問題のように思えます。 --utashiro From: Shinya Hayakawa Subject: Re: [Tokyo-pm] Re: これはどう動くの? Date: Fri, 27 Aug 2004 11:12:14 +0900 > 早川です。 > > 下のスレッドとLarryの投稿からすると、評価の順序は未定義なのでしょうか。 > http://groups.google.com/groups?threadm=20030830171542.5579.qmail@plover.com > http://groups.google.com/groups?threadm=20030301172639.GA29036%40wall.org > > ドキュメントとしては見つけられませんでした。 > 家に帰ったらラクダ本を見てみます。 > > On 2004 8月 27 金曜日 2:57 午前, Kazumasa Utashiro wrote: > > > では同一statementで@_の内容を変更していること。shiftと@_とどっちが先に評価されるかというのはCでは未定義なんだよね(K&R > > > pp. > > > 52)。perlでも明示的に定義はしてなかったように思うが、今のところどのplatformでもshiftの方が先に評価されるみたい。だけどCは > > > そうは行かない。 > > > > Perl の設計方針としては定義されていましたよ。今でも perlfaq8(1) には、 > > > > You'll also see code that does this without a temporary variable, > > as in > > > > select((select(DEV), $| = 1)[0]); > > > > という常套句についての記述があるし、このコードが期待通りに動くことは、 > > 少くとも version 2 の頃から保証されていたはずです。 > > > > 探せば、どこかにドキュメントされているだろうと思うし、もしなければドキュ > > メントの不備なんじゃないですかね。 > > -- > Shinya Hayakawa > hayakawa@livedoor.jp From dankogai @ dan.co.jp Fri Aug 27 01:23:45 2004 From: dankogai @ dan.co.jp (Dan Kogai) Date: Fri Aug 27 01:23:49 2004 Subject: =?ISO-2022-JP?B?UmU6IFtUb2t5by1wbV0gUmU6IBskQiQzJGwkTyRJJCYbKEI=?= =?ISO-2022-JP?B?GyRCRjAkLyROISkbKEI=?= In-Reply-To: <200408271058.42591.tetryl@tokyoprogrammer.com> References: <20040826192044.FA73.MIYAGAWA@edge.co.jp> <200408262301.50950.tetryl@tokyoprogrammer.com> <5603AD70-F776-11D8-96BA-000A95DBB50A@dan.co.jp> <200408271058.42591.tetryl@tokyoprogrammer.com> Message-ID: モツはちょっと苦手な弾です。 On Aug 27, 2004, at 10:58, Shinya Hayakawa wrote: > On 2004 8月 27 金曜日 12:41 午前, Dan Kogai wrote: >> それにしても早川君って「モツ好き」だよなあ.... > > モツ?...あぁ、gutsってことですね(^^; > > いえ、Dumpする場所を追加すると, > perl -MDevel::Peek -le '@a=qw/a b c/; sub a{Dump \@_; \@_ }; > $b=a(@a);Dump $b' > REFCNTは3に増えている事が分かります。 > > @_ 自身はスクラッチパッド上に確保されるので > 保存の仕組みはクロージャと全く同じですよね。 うーん、この場合、Storageを確保するのはどこか、というのがツッコミの意図で、この場合Storageが確保されているのは closureの場合のsub{}内部ではなく、呼び出し側、すなわちsplit//で生成されたSVだよね、ということです。ただし、このSVをまと めたAVは早川君の指摘どおり、@_ということになります。 早川君は@_を、弾は$_[]にそれぞれ注目していたという視点の違いですね。 上記の例で言うと、@Aと@$bはそれぞれ別モノですが、$a[]と$b->[]は同一ということになります.... ん?と書いていると >> #ただし、$b->[]の各要素のSVのref countは1づつ上がる。 >> #うむむ、むしろこちらの方が不(思議|可解)だ! > > >> 引数スタックに積まれる時にcountが上がるのでしたっけ。 >> 後で調べてみます。 の謎が解けました。各要素はそれぞれ@aより参照が一つ、そして@$bより参照がもう一つあります。図に書くと SV @a[0] --> a <-- $b->[0] @a[1] --> b <-- $b->[1] @a[2] --> c <-- $b->[2] となるわけで、確かにREFCNTは2でないと駄目ですね。AVやHVもまた、各要素(SV)に対する参照が必要ですから。 それにしてもなんでこうツラツラとモツ話をしているかというと、Perlの@_の特殊性にあります。実はPerlでは@_そのものはscratch padに確保されますが、それの各要素、$_[]は引数のコピーではなく参照なのです。ですから sub inc{ $_[0]++ }; my $a = 0; inc($a); とやると、感覚的には参照渡ししているわけでもないのに、$aは1になります。また$_[]の各要素が参照であるが故に、通常は sub func{ my (@args) = @_; # .... } とか sub meth{ my $self = shift; # .... } とsub{}側でわざわざコピーを作るわけです。Perlでは大昔からそうですが、わたしゃ最初はえらいもんにとまどったものです。しかしこの方法は後に sub args_as_hash{ my %args = @_; } という手法にも道を開きましたし、高速でもある。今となってはあばたもえくぼですね。 Dan the Camelophilia From miyagawa @ edge.co.jp Fri Aug 27 01:48:01 2004 From: miyagawa @ edge.co.jp (Tatsuhiko Miyagawa) Date: Fri Aug 27 01:48:02 2004 Subject: [Tokyo-pm] Re: =?ISO-2022-JP?B?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <20040827.151814.70227029.utashiro@iij.ad.jp> References: <200408271112.14067.tetryl@tokyoprogrammer.com> <20040827.151814.70227029.utashiro@iij.ad.jp> Message-ID: <20040827154746.FA87.MIYAGAWA@edge.co.jp> 宮川です。 メーリングリストではなくて早川さんの自宅アドレスみたいですよ。 On Fri, 27 Aug 2004 15:18:14 +0900 (JST) Kazumasa Utashiro wrote: > 変なアドレスから出しちゃったので、tokyo-pm には届かなかったみたい。す > みません。早川さんのメールも届いていないのではないでしょうか。複数のメー > リングリストに投げるのは混乱を招くように思います。ところで > tokyoprogrammer.com って何なのでしょう? > -- Tatsuhiko Miyagawa From utashiro @ iij.ad.jp Fri Aug 27 03:29:44 2004 From: utashiro @ iij.ad.jp (Kazumasa Utashiro) Date: Fri Aug 27 03:29:48 2004 Subject: [Tokyo-pm] Re: =?iso-2022-jp?B?GyRCJDMkbCRPJEkkJkYwJC8kTiEpGyhC?= In-Reply-To: <20040827154746.FA87.MIYAGAWA@edge.co.jp> References: <200408271112.14067.tetryl@tokyoprogrammer.com> <20040827.151814.70227029.utashiro@iij.ad.jp> <20040827154746.FA87.MIYAGAWA@edge.co.jp> Message-ID: <20040827.172944.240043379.utashiro@iij.ad.jp> From: Tatsuhiko Miyagawa Subject: Re: [Tokyo-pm] Re: これはどう動くの? Date: Fri, 27 Aug 2004 15:48:01 +0900 > メーリングリストではなくて早川さんの自宅アドレスみたいですよ。 あ、ホントだ。なんか変な風に勘違いしました。単に抜けばよかっただけなの ですね。失礼しました。 ところで、perlop(1) には次のように書いてありました。 Comma Operator Binary "," is the comma operator. In scalar context it evaluates its left argument, throws that value away, then evaluates its right argu- ment and returns that value. This is just like C's comma operator. In list context, it's just the list argument separator, and inserts both its arguments into the list. まあ、確かにリストの評価順序は明確には書いていないということになるので しょうか。 --utashiro From maeda @ tokyo.pm.org Fri Aug 27 02:21:01 2004 From: maeda @ tokyo.pm.org (maeda@tokyo.pm.org) Date: Fri Aug 27 03:43:37 2004 Subject: [Tokyo-pm] non-subscribed =?iso-2022-jp?b?bWVtYmVyGyRCJCskaSRORWo5RhsoQg==?= Message-ID: <87fz69ujvm.wl@rosehip.src.ricoh.co.jp> サボってばかりの管理人の前田です。 subscribeしたメールアドレス以外からの投稿は モデレート待ちキューに入ります。 管理者(私)がモデレートすると送出されます。 早川さんと歌代さんのは再送なり引用なりで 届いてるようなので却下しときますね。 リストに投稿するときはFrom:ヘッダを指定するか、 頻繁に投稿に使うアドレスでもsubscribeして、 配送停止設定をしてください。 各種設定の変更や過去ログアーカイブは http://www.pm.org/mailman/listinfo/tokyo-pm からアクセスできます。 よろしくお願いします。 ------------------------------- Avatar Md+ d/=□=\. Md+ 前田 薫 maeda@tokyo.pm.org 75t 170km/h AFC50 O \*oo*/ " LG+ LG+ Tokyo.pm http://tokyo.pm.org HeatSink 15 LRM10 .=X ̄X=. LRM10 ------------------------------- Armor 2164 Md+ _|_ _|_ Md+ From maeda @ tokyo.pm.org Fri Aug 27 03:57:44 2004 From: maeda @ tokyo.pm.org (maeda@tokyo.pm.org) Date: Fri Aug 27 03:58:00 2004 Subject: [Tokyo-pm] non-subscribed =?ISO-2022-JP?B?bWVtYmVy?= =?ISO-2022-JP?B?GyRCJCskaSRORWo5RhsoQg==?= In-Reply-To: <87fz69ujvm.wl@rosehip.src.ricoh.co.jp> References: <87fz69ujvm.wl@rosehip.src.ricoh.co.jp> Message-ID: <87d61dufef.wl@rosehip.src.ricoh.co.jp> 前田です。 うーむ、自分の投稿がnon-member扱いになってしまった(恥) リストのアドレスはtokyo-pm@mail.pm.orgが正しいのですね。 ------------------------------- Avatar Md+ d/=□=\. Md+ 前田 薫 maeda@tokyo.pm.org 75t 170km/h AFC50 O \*oo*/ " LG+ LG+ Tokyo.pm http://tokyo.pm.org HeatSink 15 LRM10 .=X ̄X=. LRM10 ------------------------------- Armor 2164 Md+ _|_ _|_ Md+ From h-taguchi @ secom.co.jp Mon Aug 30 23:14:36 2004 From: h-taguchi @ secom.co.jp (h-taguchi@secom.co.jp) Date: Mon Aug 30 23:16:21 2004 Subject: [Tokyo-pm] =?iso-2022-jp?b?UGFycm90GyRCJE5EPjZhJE5MXEk4GyhC?= Message-ID: 田口です。 "The State of Perl", http://www.perl.com/pub/a/2004/01/09/survey.html この中で、Parrotの直近の目標はPythonのバイトコードをCPythonより 早く実行することだ、7月のOSコンベンションまでに... とあったのですが、この辺りの結果はどうなったかご存知の方いますか? Regards, Hirosi Taguti h-taguchi@secom.co.jp From utashiro @ iij.ad.jp Fri Aug 27 11:40:33 2004 From: utashiro @ iij.ad.jp (Kazumasa Utashiro) Date: Tue Aug 31 00:57:21 2004 Subject: [Tokyo-pm] non-subscribed =?iso-2022-jp?B?bWVtYmVyGyRCJCskaSRORWo5RhsoQg==?= In-Reply-To: <87fz69ujvm.wl@rosehip.src.ricoh.co.jp> References: <87fz69ujvm.wl@rosehip.src.ricoh.co.jp> Message-ID: <20040828.014033.191036132.utashiro@iij.ad.jp> From: maeda@tokyo.pm.org Subject: [Tokyo-pm] non-subscribed memberからの投稿 Date: Fri, 27 Aug 2004 16:21:01 +0900 > subscribeしたメールアドレス以外からの投稿は > モデレート待ちキューに入ります。 > 管理者(私)がモデレートすると送出されます。 > > 早川さんと歌代さんのは再送なり引用なりで > 届いてるようなので却下しときますね。 お手数をおかけします。ML に届かないメッセージがあるような気がして不思 議に思っていたのですが、その謎も解けました。 Avoid duplicate copies of messages? …が yes になってた。こんな設定があることも知りませんでした。 --utashiro