ローカル変数、プライベート変数、レキシカルスコープ変数【perl】
1年以上前の記事です。内容が古い可能性があります。
perlのmy宣言についてさらに調べてみました。
DQNEOさん、情報ありがとうございます。
まずはこちらの記事を
□my について – my と local どう違う? – futomi’s CGI Cafe
my を使って定義された変数は、レキシカルスコープ変数 と呼びます。そして、my を使って変数を宣言することをレキシカルスコープ宣言と呼びます。
□local について – my と local どう違う? – futomi’s CGI Cafe
local を使って定義された変数は、ダイナミックスコープ変数 と呼びます。そして、local を使って変数を宣言することをダイナミックスコープ宣言と呼びます。
perlで変数を局所化するには「my」か「local」を使います。
my宣言された変数は「レキシカルスコープ変数」、local宣言された変数は「ダイナミックスコープ変数」になるそうです。
「レキシカルスコープ」のことを「静的スコープ」、「ダイナミックスコープ」のことを「動的スコープ」とも言います。
それぞれどこが違うかというと、「レキシカルスコープ変数」は同名の別変数として局所化された変数を用意する一方、「ダイナミックスコープ変数」はグローバル変数を上書きして局所化するといった部分が違うそうです。
したがって、「レキシカルスコープ変数」を使うとこういったおかしなことも起こるみたいです。
□レキシカルスコープやらシンボルテーブルやら型グロブやら。 – Perlとかmemoとか日記とか。
use strict;
our $hoge = 'HOGE';
my $hoge = 'hoge';
print $hoge; # hoge
print ${hoge}; # hoge
print $::hoge; # HOGE
print $main::hoge; # HOGE
print $::main::hoge; # HOGE
「#」の後に書かれているのが出力結果です。
「our」宣言(グローバル変数宣言)した後に、my宣言で「レキシカルスコープ変数」を作っています。
これが、local宣言だと全て同じ出力結果になるか、エラーが出るかだと思います。
さて、では「プライベート変数」ってのはなんでしょう?
□Fieds_labo1 – perl-変数
* プライベート変数:my $var; いわゆるローカル変数。レキシカル変数。
* 一時的ローカル変数:local $var; 新しい変数は生成せず、指定された変数を退避して、終了時に元に戻す。
つまり、「レキシカル変数(レキシカルスコープ変数)」=「プライベート変数」であり、
「レキシカルスコープ変数」も「ダイナミックスコープ変数」も「ローカル変数」の一種だったようです。
うーむ。わかりにくい。。
ではなぜ、「my」でも「our」でも「「use strict」に対応させる簡単な改造方法」は動いたのかというと、
たぶん、どこのサブルーチンにも属さない一番の外側(最上位)でmy宣言したために、その配下にあるサブルーチンでも使えたのではないかと思うわけです。
□my宣言とour宣言
ということは「our」でなくても「my」でも「use strict;」のすぐ下に書く分には問題ないということになりますねぇ。
今度、別のスクリプトで検証してみます。
CGI&Perlポケットリファレンス (Pocket reference)
著者:藤田 郁
販売元:技術評論社
発売日:1999-03
おすすめ度:
レビューを見る
アドセンス広告メイン
関連記事
-
-
「MySoundフル」の解約方法【docomoのスマホ契約後の有料サービス解約手順】
1年以上前の記事です。内容が古い可能性があります。「NotTV」に続いては「My …
-
-
「Xperia AX」でカメラ起動時の強制シャッターを止める方法
1年以上前の記事です。内容が古い可能性があります。色々と問題もあった「Xperi …
-
-
気をつけよう。面接官が語る印象を悪くする口癖(場合によっては一発不合格!?)
1年以上前の記事です。内容が古い可能性があります。職業訓練校で講師をやっています …
-
-
「Outlook Express」受信したメールデータのお引越し
1年以上前の記事です。内容が古い可能性があります。「Outlook Expres …
-
-
perlの文字コード変換を詳しく調べてみる
1年以上前の記事です。内容が古い可能性があります。最近、perlプログラミングを …
-
-
ワンクリックアップデートでワードプレス終了。「更新の必要はありません この WordPress のデータベースはすでに最新のものです」と出て先へ進めなくなった時の対処法
1年以上前の記事です。内容が古い可能性があります。いや、ビックリしました。 これ …
-
-
熊谷ハッカソン@立正大学まとめ
1年以上前の記事です。内容が古い可能性があります。6月6日、7日と立正大学で行わ …
-
-
Facebook(フェイスブック)に同期された連絡先(電話帳)情報を削除する方法
1年以上前の記事です。内容が古い可能性があります。なんかね。 おそらくiPhon …
-
-
Yomi-Searchの大量のログファイルをそれぞれ調べてみた
1年以上前の記事です。内容が古い可能性があります。サーバー移転に伴ってYomi- …
-
-
システム開発の値段(価格)
1年以上前の記事です。内容が古い可能性があります。最近、プログラミング系の仕事も …