06/10/22 23:20:41
URLリンク(www.ryuichi.jp)
(mod_perlの場合)
>「 2 回 目 か ら は コ ン パ イ ル が ス キ ッ プ さ れ る の で 」
したらCとかC++とかと較べなきゃ(笑)
全然遅いんだろ、perlのほうが
72:nobodyさん
06/10/22 23:34:54
PerlとCでは言語的な速度ではCの方が速いですが
Perl/mod_perl、C/CGIの場合オーバーヘッドの分Perl/mod_perlの方が速い場合があります。
PHPとPerlでは言語的な速度ではPerlの方が速いですが
PHP/mod_php、Perl/CGIの場合オーバーヘッドの分PHP/mod_phpの方が速い場合があります。
ここで「Cと比べなきゃwww」と思うような思考がPerlとPHPの速度に関して定期的に起こる
不毛な議論の原因となっているのでは無いでしょうか。
73:nobodyさん
06/10/23 04:31:37
>>71
Cの場合はmodule作れちゃうから最速なのは当たり前。
ここではもっと低次元な争いをしてるので高次元の方はお引き取りください。
74:nobodyさん
06/10/23 12:16:34
>>72
基本的に同意なんだけど、sortとか文字列処理がややこしい場合、Cを使って自分で
書いたクソコードより、perl使ったものの方が速い事がありそう。
perl,php,java,cのどれが良いかなんていう話は、はっきり言って不毛だと私も思う。
問題に応じて適した処理系を選択する、と言う方向に発想が行かない所が悲しいね。
75:nobodyさん
06/10/23 23:20:49
perlを習得できずにPHPに逃げたやつが、
目の敵にしてるだけ。
どっちもできる側からすれば、どーでもいい。
76:nobodyさん
06/10/24 07:13:29
>>73
perlでもapacheのmodule作れる。それをするための仕掛けがmod_perl。
Cでも、apacheのmoduleにすると当然速いが、CGIにすれば、そう速いと言う程でもない。
やる事にもよるけどね。
77:nobodyさん
06/10/24 08:37:46
>>76
そういう話をしてるんじゃないと思う
78:nobodyさん
06/10/24 09:41:16
>>76
微妙に言葉がおかしい感じ
79:nobodyさん
06/10/24 19:40:18 +CkcIqPb
perlは速くて優れた言語だよね
廃れる一方だけどw
80:nobodyさん
06/10/24 19:53:45
mod_perl自体が速いんじゃなくて、
二 回 目 以 降 は コ ン パ イ ル を ス キ ッ プ し て い る の で
速いんだろ?
>>72はなにとんちんかんなこと言ってんだ?
>>75も寝ぼけてるね
phpもperlもそんなに変わらないだろ
ていうか小難しいうえに処理も遅かったら最悪じゃないの、perlってw
81:nobodyさん
06/10/24 21:38:55
また凄い奴が来たな
82:nobodyさん
06/10/25 00:07:34
>>80
PHPがperlと比べて速いと言われたのは、Perl/CGIとmod_phpを比較しての事だった。
また、
> phpもperlもそんなに変わらないだろ
では、phpとperlの習得の難易度は大差ないと言いつつ、次の行で、
> ていうか小難しいうえに処理も遅かったら最悪じゃないの、perlってw
perlは小難しいと言っている。
どっちだと言いたいんだろうか。
83:nobodyさん
06/10/25 00:19:11
おまえ馬鹿じゃないの?w
75が
>perlを習得できずにPHPに逃げたやつが、
と言ってるから
>ていうか小難しいうえに処理も遅かったら最悪じゃないの、perlってw
て言ってやったんじゃないの
perl厨ってほんと頭悪いよね
それとさ
(mod_perlは)
>二 回 目 以 降 は コ ン パ イ ル を ス キ ッ プ し て い る の で
いい加減この部分とスピード比較のリンク先よめよ
84:nobodyさん
06/10/25 00:22:00
>>83
いやさ、「コンパイルをスキップ」の部分を懸命に強調してるけど
それで速くなってるなら全然問題ないと思うのだが何が言いたいの?
85:nobodyさん
06/10/25 00:29:58
言語として早いんじゃなくて、コンパイル飛ばすから速い訳だろ?
といってんだよボケ
86:nobodyさん
06/10/25 01:44:12
このすれのいちがあたまわるいしつもんしてんだからふもうなレスになるのはしょうがない。
87:nobodyさん
06/10/25 02:30:18
>>85
「言語として速い」って意味ワカンネ
インタプリタの速度の事言ってる?
88:nobodyさん
06/10/25 02:44:37
PHP なんかに信者がいるとは思ってなかったがやっぱりいるんだねえ。
アホにも使えるのはある意味利点だが、
ほかのいいものを知ろうとしなくなるというのは大きな欠点だ。
89:nobodyさん
06/10/25 02:52:46
彼らにはPHPが唯一無二の存在だから尚更その傾向が強いんだろうね。
昔はPerl使いにもそういう奴がいたんだろうけどWEB用途でのPerlが廃れていくにつれ
減少するかPHPに流れるかしてしまった。
90:nobodyさん
06/10/25 02:52:53
>>85
じゃあmod_phpはコンパイル飛ばさないの?w
91:nobodyさん
06/10/25 02:57:17
マジレスすると飛ばさないよ。だからコードの制約がゆるい。
浮くコストはインタプリタ読み込みの部分。
92:nobodyさん
06/10/25 02:58:52
>>72に聞けよ
言語そのものの処理速度(=モジュールかCGIかに影響されない速度)
ということじゃねーの?
phpとperlを同じ条件で較べろと言ってるんだから、そうするとしたら、
コンパイル作業込みの一回目で計測しなきゃおかしいだろ。で、この場合、
リンク先によるとphpのほうが速いってことになる
同じくコンパイルをスキップした速度を較べるなら、phpAとかと
較べなきゃオカシイってことになるだろ
ちなみにこのphpA、普通のphpの四倍くらいで動くらしいから、
phpよりちょっと速いくらいのmod_perlなんか比較にならないだろ
ようするにおれが言いたいのは、perl厨は屁理屈と嘘ばっかり言いやがって、
馬鹿じゃねーのかってことだよ
うっかり騙されるとこだった
93:nobodyさん
06/10/25 03:03:47
>>92
屁理屈こねてるのはどう見ても貴方です。本当にありがとうございました。
94:nobodyさん
06/10/25 03:04:50
>>92
えーとまぁそのなんだ
強くイ㌔
95:nobodyさん
06/10/25 03:06:30 Dq5Ab1kn
perl厨晒しage
96:nobodyさん
06/10/25 03:07:37
つか誰一人ベンチマークとかやらないのね
97:nobodyさん
06/10/25 03:08:33
php厨が自爆するスレはここですか?
98:nobodyさん
06/10/25 03:10:59
>>45
99:72
06/10/25 03:38:59
>>92
まず根本的に、異なるテンプレートエンジンで言語速度を比べることは出来ない。
それとPHPAの動作原理を理解して欲しい。毎回描画計算するアセンブラより早くなるケースがいくらでもある。
>コンパイル作業込みの一回目で計測しなきゃおかしいだろ。
forkするだけのCGIでの比較はバイトコード変換~実行完了までの純粋な速度を算出出来る。
純粋な処理速度を出したいのならπの計算などを
URLリンク(homepage3.nifty.com)
のような計測方法でやればいい。
perl厨は屁理屈と嘘ばっかり、自分は絶対に正しいという固定概念を取り払って
冷静に考えてみるのがよろしいかと。現状は議論するに値しない
100:nobodyさん
06/10/25 04:16:51
mod_perlはファイルが更新されていなければ(設定次第だけど)
コンパイルを飛ばす(メモリにコンパイル済みのプログラムを保持してる)ので結構早い
mod_phpは毎回コンパイルする
だから単純に考えるとmod_perl>mod_php?
だけど共有鯖だとセキュリティがだめ
CGIの場合
perl,phpともにプロセス起動のオーバーヘッドがあるから速度はもちろんapacheのモジュールより遅い
どっちも大して違わないからCGIとして使うとperl=php?
まあapache使わずにアセンブリでHTTP鯖書くのが一番早いってこった
101:nobodyさん
06/10/25 09:47:34
>>96
以前、abではベンチ取った事があるんで今更かなと。
php信者にベンチ取って貰った方が楽しめそうだし。
言語(インタプリタ)の処理速度がとか言いつつ、テンプレートエンジンの比較をしたリンクを
持ってくるあたり、十分期待できる。w
102:nobodyさん
06/10/25 15:10:06
速度速度って、サーバ分散すりゃいいじゃん。
というか、そんな微々たる差なんてのはプログラムの組み方が悪い時のボトルネックを追い抜くことゼッタイないし。
PHPもPerlでも組み方次第でどうとでもなるし。
アプリケーションの特性によってボトルネック部分は変わってくるし。
言語なんて関係なくね? JavaだろうがCだろうが、悪い書き方したらとんでもなく遅くなって使い物にならなくなるし。
ふつーに考えて速度よりも保守性が大切になることのが多いし、遅かったらプロファイリングなりベンチマークなりでもして
該当個所だけ改善すればいいんじゃ?
おまえらいつまで馬鹿みたいなこといいあってるんだ?
103:nobodyさん
06/10/25 16:15:46
言語の速度を議論しているスレで
> 言語なんて関係なくね?
だとさ。
勝手に分散スレに行ってくれよ。
104:nobodyさん
06/10/25 19:27:41
オラオラオラー おまいら能書きばかりでちゃんと計測してんだろうな。
オラオラオラー >>38をPerlが得意とするコンソールで実行して何分かかったんだ?あ?
オラオラオラー Perlみたいな糞遅いもんの測定には右下の時計で十分すぎるな。
オラオラオラー >>38はPerlの遅さを証明する氷山の一角に過ぎないからな。
オラオラオラー 悔しかったら速いコード書いてみろよ。
オラオラオラー どうせできないだろうけど。ウププ
今日のところはこれくらいで勘弁しといちゃるからもういっていいぞ。
105:nobodyさん
06/10/25 19:56:04
>>99
おまいのレスを見ながらいちいちググってみたけど
結局何が言いたいのかさっぱりわかんねぇ
モジュールでも、コンパイル済みでも、cgiでも結局phpのほうが
速いのに違いはないんだろ?
なにがphpAの仕組を理解しろ、だよ
二回目以降はコンパイルすっ飛ばす点じゃmod_perlと一緒だろ
アセンブラより速いんだったら大いに結構じゃねーか
106:nobodyさん
06/10/25 20:27:15
最近あんまベンチとってなかったので調べてみたら予想以上にPHP速いね。
PHP4の最初の頃に調べたときは何をやってもPerlより遅いみたいな印象だったけど
最新のだと空ループや正規表現までPerlを追い越してる雰囲気。
あるいはPerlが肥大化で遅くなった?
ハードで簡単に解決できないPHPよりPerlのほうが100倍速いみたいなの今でもある?
進歩が止まったものは追い越される運命なのか。。。
107:105
06/10/25 20:36:55
すみません、自己解決しました。
108:nobodyさん
06/10/25 21:02:14
自己解決されちゃったよw
109:nobodyさん
06/10/25 22:12:06
ベンチマークの取り方にもよるけど、おおむねPerlの方が速い。
ただし、mod_phpとかのウェブのアプリケーションサーバとしての速度になると単純な速度比較は出来なくなる。
110:nobodyさん
06/10/25 23:34:35
結局はプログラミングスキルの方が重要なんだけどね。
111:nobodyさん
06/10/26 22:49:10
Perlのほうが速いと思っていたようなのまでPHPのほうが速いんだけど。
どーゆーことさ。。
$i = 10000000;
while ($i--) {
$x = $i * 2;
$y = $i / 2;
$z = $i << 1;
}
112:nobodyさん
06/10/26 23:30:00
perlのほうが処理が速いっていうのは、
全然根拠のないデマだよ。
113:nobodyさん
06/10/27 01:20:45
速度気にしてもあまり意味無いけど
PHP5>Perl5>PHP4かな。
Perl6は遅いんですよね?
114:nobodyさん
06/10/27 01:24:53
>>113
いや、だいぶ安定してきたw
115:nobodyさん
06/10/27 03:32:16
PHP4は論外として、PHP5.1は確かにかなり速くなった。
>>111のような単純ループはPerlと大差ないか、むしろ速いかも。
しかし、PHPの最大の問題はその言語仕様の貧弱さ。
配列も連想配列も同じ扱いだから、配列操作が遅い。
>>111のコードを、
$i = 10000000;
$arr = array()
while ($i--) {
$x = $i * 2;
$y = $i / 2;
$z = $i << 1;
$arr[] = array($x,$y,$z);
}
と変えると途端にPerlより圧倒的に遅くなる。
もうひとつの問題はメモリの使用量。
上のようなコードをPerlと比べると数倍消費する。
116:nobodyさん
06/10/30 16:45:13
perl、php比較スレってマジレス傾向になるとスレが盛り上がらなくなるな。
117:nobodyさん
06/10/30 23:31:42
自分で速度比較も出来ない馬鹿の集まりだからな
118:nobodyさん
06/10/31 00:58:50
文字列をゴリゴリするならPerl
呼び出してすぐ終わるならPHP
なんとなく気が向いたらRuby
ソフトバンクのMNPシステムならN88-BASIC
119:k ◆WFGp1NZuiw
06/11/03 08:51:26 YXjRlHj6
CGI に対する mod_perl の利点ってコンパイルの省略以外に,共有メモリを使っ
た複数リクエスト間でのデータの共有が考えられると思うんですが,これがあ
まり話題にならないのは何故なんでしょうか?
いくらスクリプト言語でも,計算より I/O の方が "桁違い" のオーダーで遅い
んだから,重要だとおもうんですが.
120:nobodyさん
06/11/03 09:37:51
それは一般的に言われている共有メモリとはちょっと違うと思うよ。preforkだと同じプロセス間だけだし。
Perl/CGIからでも利用できる共有メモリモジュールがあるしPHPにもshmop関数がある。
121:k ◆WFGp1NZuiw
06/11/03 11:42:00
>それは一般的に言われている共有メモリとはちょっと違うと思うよ。
いえ,一般的な共有メモリのことです.
mod_perl になって常駐するようになれば,共有メモリ使って prefork の子プ
ロセス間でデータを共有できるようになりますよね?
>Perl/CGIからでも利用できる共有メモリモジュールがあるし
CGI だと毎回プロセスが終了しちゃうから意味無いよー.
122:nobodyさん
06/11/03 12:49:31
意図的にデストラクトしないから再び同じプロセスを利用したときに再利用出来るという永続化の利点であって
一般的に共有メモリと聞いて連想するCのshm関数等とは全く性質が違うと思う。
>CGI だと毎回プロセスが終了しちゃうから意味無いよー.
共有メモリに入ってるデータは呼び出し元に関わらず自分で解放するまでは残ったままだよ。
なので敢えてCGIと書いた。
最大maxclientsの数だけ確保しなきゃいけないのだからそれほど効率良くないと思う。
2chもdatを共有メモリに置いてると聞いたけどどういう方法でやってるのかな。
123:k ◆WFGp1NZuiw
06/11/03 12:59:47
>共有メモリに入ってるデータは呼び出し元に関わらず自分で解放するまでは残ったままだよ。
あー,そうですね...とんちんかんなこといってた.
>最大maxclientsの数だけ確保しなきゃいけないのだから
これよく分からないんですが,何の確保の事でしょうか?
124:nobodyさん
06/11/03 14:29:04
例えば1MBのデータを使い回すとして
IPC::ShareLite等なら1MBの共有メモリだけで済むけど
mod_perlだけでやろうとしたら予測されるapacheのプロセス数×1MB必要でしょ。
125:nobodyさん
06/11/03 14:40:01
ご主人様、それはわかっております。
126:k ◆WFGp1NZuiw
06/11/03 14:46:51
>>124
ああ,そういう意図ですか.了解です.
127:nobodyさん
06/11/21 10:12:54
mod_perlとmod_phpのパフォーマンス比較
URLリンク(www.itmedia.co.jp)
こんな情報も見つけれないやつは帰れ
128:nobodyさん
06/11/21 10:17:33
ついでにほれ っURLリンク(itpro.nikkeibp.co.jp)
129:nobodyさん
06/11/21 16:07:03
mod_phpの方がパフォーマンス高いのは意外だったな。
PHPは5.1で2倍くらいに速くなってたか。
130:nobodyさん
06/11/23 02:31:34
ごく単純な処理だけならPHPの方が起動にコストがかからずに早い。処理が複雑になると、Perlに勝てなくなる。
131:nobodyさん
06/11/23 04:16:42
>>127のテストって意味ないんだよな。
やるんなら、PHPでもPerlでもほとんど同じコードになるような処理でテストするか、
一般的なウェブアプリのコードを何種類か再現して、その平均を取るテストをするか、のどっちかじゃないと。
>>127みたいにCGIモジュールとDBIモジュールのロードだけで処理コストのほとんどを使ってしまうようなテストじゃテストの意味がない。
CGIモジュールで<HTML>タグ書くなんて、実際にはありない行為だし。
132:nobodyさん
06/11/23 04:45:59
>>127がNGに引っかかってたから何かと思えばそこか。
133:nobodyさん
06/11/23 06:16:28
>>131
ソースのひとつでもだしてから
言えや
どっちが良いかなんてどうでもいいけど
そこまで言うならここにデータを書け
134:nobodyさん
06/11/23 12:17:41
一般的なウェブページを再現するようなコードなんて、そうそう書けるわけないじゃん。
あと、この板でPerlやPHPのベンチマーク取った書き込みしたのはたいていオレだよ。
1年くらい前のSmartyは遅いから使うなって、ベンチ取ったのもオレだし。
ちょっとまえにPHPのarray()が遅いって書き込んだのもオレ。
まあmod_perlはmod_phpよりだんぜん取り扱いが難しいから、単純に速度だけでどちらが優位かは言えない。
それに速度ならJavaの方が圧倒的に速いんだし。
135:nobodyさん
06/11/23 12:43:16
>>134
>速度ならJavaの方が圧倒的に速いんだし。
まて、それは孔明の(ry
136:nobodyさん
06/11/23 20:19:00
外部モジュールを使ったPerlとネイティブに動くPHPを
永続化が出来るmod_perlと出来ないmod_phpで比べるから
おかしなことになると思いきやいい感じの勝負になってるねw
137:nobodyさん
06/11/23 23:51:36
>>134
> 1年くらい前のSmartyは遅いから使うなって、ベンチ取ったのもオレだし。
あのアホかぁ。
ベンチとるのも良いが、意味のあるペンチを取る様にしようね。
138:nobodyさん
06/11/24 00:41:09
smartyはたいして有効な機能がないわりにファイルサイズが馬鹿に大きく、requireするだけで大きなコストがかかる。
他スレでもあるように<?=$var?>の方が遙かに実戦的。
smartyの唯一のメリットは強制的にビューとロジックを切り分けられるということ。
これはグチャグチャになりやすいPHPという言語の仕様からそれを防ぐという点で、初級のウェブアプリデベロッパーにはある程度有効な面もあった。
それにしたって、ウェブフレームワークを使った開発なら、たいていの場合フレームワークの仕組みとしてビュー部分は切り出してある。
よってますますsmartyは必要なくなってきて、smartyのようなテンプレートエンジンは廃れてきた。というのが最近までの流れ。
139:nobodyさん
06/11/25 13:04:02
>>138
っ URLリンク(simplate.aimy.jp)
140:nobodyさん
06/12/13 05:30:09 3eAAIseo
Perl遅いやPHP遅いだのグダグダ言う奴は大体ヘタレ初心者PGだろ?
前に仕事でPHP褒める奴がいたが、
そいつが昔書いたPerlソースを解析して遅い部分探してやったよ
@array = @array + @array2;
↓
push (@array,@array2);
これだけ変えてやったら劇的に早くなったよ。
お前ら1分に1000~万単位のアクセス抱えた仕事でもしてんのか?
負荷分散サーバー100台必要なサイトとかの仕事やってんのか?
TV局関連の仕事とか有名サイトとかそれ位のレベルの仕事の奴だけ語れぼけ
俺はTV局関連の仕事が多いから意識する事多いけどなw
とりあえず俺の見解な!
mod_perl上でコード数抑えたピュアコーディングが負荷分散サーバー数少なく処理できた。
インタープリターの性能が一番重要なんだとおもうよ。
後、短時間(1,2時間の番組)WEB投票物の番組連携の場合はASPを使う時があるよ。
141:nobodyさん
06/12/13 07:41:24
わかりきったこと書くな
142:nobodyさん
06/12/13 09:58:26
>>140はツンデレちゃん?
143:nobodyさん
06/12/13 12:40:05
>>140
>@array = @array + @array2;
こういう書き方があるって今知った。
本見るとpush (@array,@array2);の方が多くね?
144:nobodyさん
06/12/13 17:47:24
遅い部分探すのって、どうやるの?
自分のスクリプトでやってみたいので誰か教えてほしい。ググッたら出てくるかな?
145:nobodyさん
06/12/13 21:14:09
>144
Cだけど、牧野淳一郎のパソコン物理実地指導とかに書いてあったな。
私は勉強熱心じゃないへたれだからしらん。
146:nobodyさん
06/12/13 23:13:40
use Benchmark;するか、UNIXのコマンドラインからtimeコマンド使えば良いのでは。
147:nobodyさん
06/12/14 07:05:14 GsaWAeDl
>>143
お前は初心者丸出しだw
>>142
ツンツンしててすまんなもうちょい落ち着いて書き込むわ
>>144
簡単な方法は
$| = 1; (初心者に教えやすいおまじないだ!バッファリングを無効にするなんていってもわからんだろw)
つけて気になる箇所の前にprint文入れて動かして見れ
処理スピードを目で見て確認できるw
146が言うようにuse Benchmarkでやると数値で確認できる。
148:nobodyさん
06/12/14 07:16:22 GsaWAeDl
>>143
ちょっときつい言い方だったから言い換える
昔のPerl本は速さより動かす時代だったんだよ
初版が2000年以前のPerl本買ってみるといい
きちがいサンプルコードがいっぱいあるぞ
その頃の残骸がPerlの評価を下げてるんだろうな。
でも今はPHPの方が金にはなるんじゃない?
PerlもPHPもコードはさほど変わらんだろ。
極限の速さを競うならPerlで間違いない。
149:nobodyさん
06/12/14 13:44:19
まだ仕事が出回ってるPHPの方が金になるかもしれないけど
金額が安すぎるんだよなぁ
150:nobodyさん
06/12/14 23:59:30
偉そうに語っているが、たいした事は1つも書いていない
自称玄人乙
151:nobodyさん
06/12/15 05:49:06
>>143
俺もそんな書き方しようなんて考えた事もなかったw
152:nobodyさん
06/12/23 15:44:33
>146のようなことが
>145の本に結構具体的に書いてあるよ。
まあ当たり前の事なんだけど。
153:nobodyさん
06/12/29 14:04:40
本体はperlだけど、拡張子をphpに変えてみた。
スクリプトクレクレ厨が沸いてワラタw
154:nobodyさん
07/03/22 06:53:45
>>4に
5.安全性
perl<PHP
も加えて。
155:nobodyさん
07/03/22 07:06:19
>>153
script.cgi(中身はperl)をscript.php(中身はperl)にしたってこと?
動くのそれ。
156:nobodyさん
07/03/22 07:10:20
動くわけないわなw
辛うじてhtmlだけは出力したけどww
157:nobodyさん
07/03/22 07:19:21
ごめん。
誤爆とかそういうレベルじゃない。
ホントにごめん。
>>155と>>156は透明あぼんして下さい。
158:nobodyさん
07/03/22 23:22:01
ソースコードにHTMLのタグがあると気持ち悪いんだよ。PHP。
Smartyだっけ?それ使えばいい話だけど。
フリーのPHPスクリプトは気持ち悪いw
あとな。K○NTだっけ?Perlでフリーのスクリプト出してるとこ。
あそこが書いたソースもキモい。
今時use strict、use warningや -wしてないソースwwwwwww
変数もグローバル/ローカルの区別なし。
159:nobodyさん
07/03/23 00:33:46
概ね同意だがこいつ頭悪そう
160:nobodyさん
07/03/23 18:28:46
strictにしてないなんて幾らでもあるじゃん。
自分で書くなら当然やるけど、別にちょっと使う程度なら問題ないし。
strictじゃないの?うはーwwwwきもっwwwwとか言う方がきもいわ。
161:nobodyさん
07/03/26 20:24:15
>>158
そりゃ今時書いたコードじゃないからだろ
162:nobodyさん
07/04/06 03:04:34
my と local をきちんと説明できる人間ってどのくらい居るんだろうな。
163:nobodyさん
07/04/06 05:22:41
初心者レベルだからlocalはぶっちゃけ自信ない。
よく特殊な使われ方するし。
164:nobodyさん
07/04/06 22:13:55
my(=局所変数)スコープ内でのみ利用できてスコープを抜けた所(リファレンスがなくなったところ?)で破棄される。
local(=退避変数)宣言があった所で値を退避させてスコープを抜けた所でもとに戻す。
って感じで説明するかなぁ
以下のコード実行結果予想して、実際に実行してあってれば理解できるんじゃないかな
use strict;
use warnings;
my $a = 1;
local $b = 1;
my $c = undef;
if(1){
my $a = 'a'; local $b = 'a';
$c = sub {
printf "%d:a=%s,b=%s\n",1,$a++,$b++;
};
printf "%d:a=%s,b=%s\n",2,$a++,$b++;
}
printf "%d:a=%s,b=%s\n",3,$a++,$b++;
$c->();
printf "%d:a=%s,b=%s\n",4,$a++,$b++;
局所化できない変数($_等)除くと、よっぽど特別な理由がなきゃmyでいいじゃんって思う