ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

my, our, local

自分も以前、こんな感じにいろいろ実験したのだけれど・・・

基本的に全てperldocに書かれている通りでしか動かない。それがPerlの仕様だからだ。しかし、プログラマーがバックグラウンドにC/Java/PHPを持っている場合、頭がPerlのスコーピング機構について行けず、知らない間にC/Java/PHPのスコーピングで変数を利用しているという状況になる。

1. 変数が思った通りの値にならない。
2. perldocや書籍を読む限りにおいては正しい動作をしているようだ。
3. なぜそれが正しい動作かがわからない。(頭の中ではC/Java/PHPの動作を無意識に期待しているため)

FrontPage - Glamenv-Septzen.net

ううう、また分からなくなりそう。

ここで、Perlのスコープに関するルールを覚えておきましょう。すっごく簡単です。

* {}は、問答無用でスコープを作る = block scope
* ファイルは最初と最後に{}があるものとして扱われる

これだけです。ファイルスコープというのは、厳密にはPerlにはないんです。

404 Blog Not Found:perl - myとourとscopeと

ううう・・・あ、あってるよね?自分の実験結果とその理解。ラクダ本読まなきゃだめかなぁ・・・。
「ファイルの最初と最後に{}があるもの」というのは凄いわかりやすいです。