• ベストアンサー

my($Str)とmy $Strの違い

いつもお世話になります。 某高機能アクセス解析プロのPerlで書かれたCGIファイルの中に、 my($Str)と、my $Str が出てきます。 これは、何か特別な違いがあるのでしょうか。 知識も無いのにCGIを改造していて恐縮ですが、 このような ちょっとした事で非常に悩みます。 どうか教えて下さい。 よろしく、お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kapura
  • ベストアンサー率50% (48/95)
回答No.3

my $str;とmy($str);はどちらもローカル変数にしているという点で同じですよ。ただNo.2の方も説明しているとおり、 同時に代入 (初期化) をする場合にその解釈 (スカラー、リスト) が違うので結果が変わり得ます。 括弧は同時に複数の変数をmy宣言する場合にも使います。 my($str1, $str2, @array, %hash); これはmy $str1; my $str2; my @array; my %hash;と同じです。 1つの変数の場合は面倒なのでふつうは括弧を書かないでしょう。

waterclock
質問者

お礼

回答ありがとうございます。 今までの回答例と照らし合わせて、ピィピィって来たものがあります。 なるほど、これは結構使えますね。 実際にこのアクセス解析CGIでも使い分けてるし、やっと理解してきました。 皆さん、ありがとうございました。点数は気にしないで下さい。 なんせ、perlを知らない人間がつける採点ですから。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

myは、サブルーチンやブロックなどで局所変数を作るのに使います。 my $str と my ($str)の違いはというと、右側の評価が変わってきます。 my $x = @ARRAY; my ($x) = @ARRAY; としてみるとわかりやすいのではないかと思います。 最初の場合は、スカラーで評価されるので、要素数がはいり、 後の場合は、配列で評価されるので、先頭の要素が入ります。

waterclock
質問者

お礼

お礼が遅くなり申し訳ありません。 どうも回答ありがとうございます。 やはり、違うのですね。 最初から勉強しないと駄目だと感じております。 PHPが最初で、次にperlっていうのは、かなり難しいです。

  • mstosh
  • ベストアンサー率50% (1/2)
回答No.1

myはサブルーチンの中で使う、その中でだけ通用する変数を定義します。ローカル変数といいます。

waterclock
質問者

補足

応答ありがとうございます。 my $Strが、ローカル変数ですね。 my($Str)は、何という名称ですか?また()で括ると、 使い回しができるのでしょうか? 教えて下さい。お願いします。