2009年03月28日16:01 Perl 型グロブを理解する 〜アスタリスクは怖くないよ(。・ω・)ノシ〜 先日、tokuhiromさんの LWP::UserAgent::WithCache::Transparent を見ていて、 my $orignew = *LWP::UserAgent::new{CODE}; {CODE}って何だ!?と思ったので調べてみました。結論から言うと、これは型グロブです。まずは型グロブの簡単な説明から。 そもそもperlでは、(グローバルな)変数とか配列とかハッシュとかサブルーチンとかファイルハンドルなんかは全て一つのテーブル(シンボルテーブル)で管理されています。 ※レキシカル変数(my宣言する変数)はシンボルテーブルではなく、別テーブルで管理されています。 例えば、 #!/usr/bin/perl use strict; use warnings; ou
昨日の考察により、コードリファレンスを使って、 オブジェクトのメソッドを呼ぶことは、 継承上の問題を生ずるため使えないことが判明した。 では、メソッドを動的に呼び出すにはどうすれば良いか。 Perl には、メソッドへのリファレンスは存在しないため、 事前に分かっていないメソッドを引き渡すには、 文字列によるメソッド名の指定しかない。 では名前を使ってメソッドを呼ぶにはどうすればいいか。 Perl はこれまた意外な答えを持っている。 オブジェクトが $object、メソッド名を $method とする。 $object は bless されたリファレンスが入っている。 $method には、文字列でメソッド名が入っている。 $object の $method を呼び出すには以下のように書く。 $object->$method; $method は、文字列もしくはコードリファレンスが入った ス
以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く