[解決済み】Perlの'my'と'our'の違いは何ですか?
2022-04-17 18:04:06
質問
私は知っている
my
はPerlの場合です。これは、定義されたブロックのスコープにのみ存在する変数を定義するものです。では
our
はどうでしょうか?
どのように
our
とは異なり
my
?
解決方法は?
どのように
our
とは異なります。
my
とは何ですか?
our
を行うか?
まとめると
Perl 5 から利用可能。
my
は、パッケージ以外の変数を宣言する方法である、ということです。
- プライベート
- 新規
- 非グローバル
-
をどのパッケージからも分離することで、変数
はできません。
という形でアクセスされます。
$package_name::variable
.
その一方で
our
変数はパッケージ変数であるため、自動的に
- グローバル 変数
- 間違いなく 非公開
- 必ずしも新しいとは限らない
-
可能
を使えば、パッケージの外(あるいはレキシカルスコープ)でもアクセスできます。
のように、修飾された名前空間を使用します。
$package_name::variable
.
で変数を宣言します。
our
で使用するために、変数を事前に宣言することができます。
use strict
タイプミスの警告やコンパイル時のエラーは発生しません。Perl 5.6 以降では、旧式の
use vars
のようにレキシカルにスコープされるのではなく、ファイルにスコープされるだけでした。
our
.
例えば、変数の正式な修飾名である
$x
内部
package main
は
$main::x
. を宣言する
our $x
を使えば、素の
$x
を使用する場合、宣言のスコープではペナルティを受けることなく (すなわち、結果としてエラーが発生することなく) 変数を使用できます。
use strict
または
use strict "vars"
. スコープは1つ、または2つ、またはそれ以上のパッケージ、または1つの小さなブロックかもしれません。
関連
-
EditPlusでPerlの開発コンパイル環境を設定する
-
Perl5 のコードを Perl6 に移行するためのソリューション
-
サーバーのサービスが動作しているかどうかを検出するための perl スクリプトです。
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] C#がforeachで変数を再利用するのは理由があるのか?
-
[解決済み] 最近のPerlはなぜデフォルトでUTF-8を避けるのですか?
-
[解決済み] ビーンスコープを正しく選ぶには?
-
[解決済み】Perlの@INCはどのように構築されているのでしょうか?(別名、Perlモジュールが検索される場所に影響を与えるすべての方法は何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Perlの文字列比較と整数比較の違いについて
-
Perlの基本的な配列のソート方法
-
ハイウォーターラインアルゴリズムのPerl実装(多値比較問題法の解法)
-
Perlのコマンドラインプログラミングでよく使われるパラメータを1文にまとめたもの
-
perl スクリプティング スタディガイド - 読書メモ
-
Perlの正規表現入門
-
Perl の Getopt::Long モジュールを使用して、ユーザーのコマンドライン引数を受け取ります。
-
長さを指定し、ランダムなDNA配列を生成するperlスクリプトコード
-
Perl拡張の正規表現コード解析
-
File::Basename を使用してファイル拡張子を取得する Perl コード