perlでGetopt::Stdを使う際に、

変数の宣言を、
myではなくourを使ってやらなければならない理由は何でしょうか。

よろしくお願いします

回答の条件
  • 1人2回まで
  • 登録:2007/06/30 00:26:16
  • 終了:2007/07/02 14:45:19

回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/06/30 08:02:00

ポイント60pt

まんまソースを読むと、

  1. 第2引数にハッシュリファレンスが渡された時はそのハッシュに値を入れる。
  2. 第2引数がそれ以外のときは Exporter で変数を export する。

と言う挙動になっています。


問題はこの2番目の時で、my だとレキシカルスコープの変数になってしまって他のパッケージから参照できず、値を代入できません。

our だとグローバル変数になるので、Getopt::Std パッケージからも値を代入する事ができます。


厳密には my を使ったときも export はされていますが、同名の別変数が出来てしまう事になります。

  • id:devichan
    e_yakisobaさん
    ここに書くことではないのですが。
    http://q.hatena.ne.jp/1199870913
    のコメント書きをOnにしてもらえませんか?
    すでに回答ができない件数設定になっていますので、書き足すこともできない状態です。
    ※みられましたら、このコメント削除してください。
  • id:the_yakisoba
    ありがとうございます。
    設定変えましたのでよろしくお願いします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません