Perlのpackage内my変数についてちょっと疑問。
myはレキシカルな局所変数なので、他package内のmy変数は他のpackageからは参照できず、参照したければmy出なくourにすると解釈していたが。
packageが別々のソースファイルだった場合はその通りですっきりしたスコープ仕様だと思っていたが…
ところが二つのpackageが同じソースファイル内にあり、他のpackageのmy変数を参照すると変な感じ:
例
use strict;
use warnings;
package P1;
our $aa = __PACKAGE__.'aa';
my $bb = __PACKAGE__.'bb';
package P2;
print __PACKAGE__ . "(1)$P1::aa\n";
print __PACKAGE__ . "(2)$aa\n";
print __PACKAGE__ . "(3)$P1::bb\n";
print __PACKAGE__ . "(4)$bb\n";
実行結果
$ perl package_a_b.pl
Name "P1::bb" used only once: possible typo at package_a_b.pl line 14.
P2(1)P1aa
P2(2)P1aa
Use of uninitialized value $P1::bb in concatenation (.) or string at package_a_b.pl line 14.
P2(3)
P2(4)P1bb
P2からはP1のmy $bbが$bbで参照できて、$P1::bb だとエラー、なんだこりゃ…???
ちな 5.36.0 と 530.0 で確認した。
Perlについての質問箱 65箱目
99デフォルトの名無しさん
2023/06/07(水) 16:24:29.96ID:ywJ2sk66レスを投稿する
ニュース
- 【速報】 米国、イランを空爆 [お断り★]
- 政府、DeNAのスマホゲーム開発に15億円支援 経産省 [バイト歴50年★]
- 【サッカー】「韓国を脱落させようとしているのか」 日本代表のドローに韓国メディアが怒り爆発「突然無気力になった」★4 [jinjin★]
- 【サッカー/W杯】セネガルがイラクに5-0大勝で突破へ望み! 3位死守して決勝T進出は他組の結果待ちに [THE FURYφ★]
- 北京で小型機が108階建て高層ビルに衝突か 米CNN報道 [蚤の市★]
- 【サッカーW杯】フランス代表がノルウェー代表下して首位通過! デンベレが前半だけでハットトリック達成 [鉄チーズ烏★]
- 【悲報】高市首相、緊急会見で異変 [431136663]
- トランプさん「多くの欧州の国がわが米国企業にデジタル税を課そうとしている、もし実行されたら、その対抗としてただちに100%の関税を課す」 [737440712]
- 私女だけど今から自○する
- 3D版「スーパーリアル麻雀」脱衣シーンが続々と公開。エロ過ぎてこれもうセックスだろ… [191842688]
- 【動画】ジャップ記者「日本で警戒すべき選手は!?」ネイマール「正直、名前も知らないよ…w」会場の記者\jajaja/ [779857986]
- 【悲報】自転車「自転車走行帯走ってたら左折するタクシーに道塞がれた!性格悪すぎだろこいつ…」→賛否分かれるwwwwwwwwwwwwwwww [802034645]