- ベストアンサー
my($Str)とmy $Strの違い
いつもお世話になります。 某高機能アクセス解析プロのPerlで書かれたCGIファイルの中に、 my($Str)と、my $Str が出てきます。 これは、何か特別な違いがあるのでしょうか。 知識も無いのにCGIを改造していて恐縮ですが、 このような ちょっとした事で非常に悩みます。 どうか教えて下さい。 よろしく、お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
my $str;とmy($str);はどちらもローカル変数にしているという点で同じですよ。ただNo.2の方も説明しているとおり、 同時に代入 (初期化) をする場合にその解釈 (スカラー、リスト) が違うので結果が変わり得ます。 括弧は同時に複数の変数をmy宣言する場合にも使います。 my($str1, $str2, @array, %hash); これはmy $str1; my $str2; my @array; my %hash;と同じです。 1つの変数の場合は面倒なのでふつうは括弧を書かないでしょう。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
myは、サブルーチンやブロックなどで局所変数を作るのに使います。 my $str と my ($str)の違いはというと、右側の評価が変わってきます。 my $x = @ARRAY; my ($x) = @ARRAY; としてみるとわかりやすいのではないかと思います。 最初の場合は、スカラーで評価されるので、要素数がはいり、 後の場合は、配列で評価されるので、先頭の要素が入ります。
お礼
お礼が遅くなり申し訳ありません。 どうも回答ありがとうございます。 やはり、違うのですね。 最初から勉強しないと駄目だと感じております。 PHPが最初で、次にperlっていうのは、かなり難しいです。
- mstosh
- ベストアンサー率50% (1/2)
myはサブルーチンの中で使う、その中でだけ通用する変数を定義します。ローカル変数といいます。
補足
応答ありがとうございます。 my $Strが、ローカル変数ですね。 my($Str)は、何という名称ですか?また()で括ると、 使い回しができるのでしょうか? 教えて下さい。お願いします。
お礼
回答ありがとうございます。 今までの回答例と照らし合わせて、ピィピィって来たものがあります。 なるほど、これは結構使えますね。 実際にこのアクセス解析CGIでも使い分けてるし、やっと理解してきました。 皆さん、ありがとうございました。点数は気にしないで下さい。 なんせ、perlを知らない人間がつける採点ですから。