my, our, local
自分も以前、こんな感じにいろいろ実験したのだけれど・・・
基本的に全てperldocに書かれている通りでしか動かない。それがPerlの仕様だからだ。しかし、プログラマーがバックグラウンドにC/Java/PHPを持っている場合、頭がPerlのスコーピング機構について行けず、知らない間にC/Java/PHPのスコーピングで変数を利用しているという状況になる。
1. 変数が思った通りの値にならない。
FrontPage - Glamenv-Septzen.net
2. perldocや書籍を読む限りにおいては正しい動作をしているようだ。
3. なぜそれが正しい動作かがわからない。(頭の中ではC/Java/PHPの動作を無意識に期待しているため)
ううう、また分からなくなりそう。
ここで、Perlのスコープに関するルールを覚えておきましょう。すっごく簡単です。
* {}は、問答無用でスコープを作る = block scope
* ファイルは最初と最後に{}があるものとして扱われるこれだけです。ファイルスコープというのは、厳密にはPerlにはないんです。
404 Blog Not Found:perl - myとourとscopeと
ううう・・・あ、あってるよね?自分の実験結果とその理解。ラクダ本読まなきゃだめかなぁ・・・。
「ファイルの最初と最後に{}があるもの」というのは凄いわかりやすいです。