アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (3件)

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

ローカル変数といいます。

この回答への補足

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

補足日時:2005/11/22 23:18
    • good
    • 0

myは、サブルーチンやブロックなどで局所変数を作るのに使います。


my $str と my ($str)の違いはというと、右側の評価が変わってきます。
my $x = @ARRAY;
my ($x) = @ARRAY;
としてみるとわかりやすいのではないかと思います。
最初の場合は、スカラーで評価されるので、要素数がはいり、
後の場合は、配列で評価されるので、先頭の要素が入ります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/11/23 21:57

my $str;とmy($str);はどちらもローカル変数にしているという点で同じですよ。

ただNo.2の方も説明しているとおり、
同時に代入 (初期化) をする場合にその解釈 (スカラー、リスト) が違うので結果が変わり得ます。

括弧は同時に複数の変数をmy宣言する場合にも使います。
my($str1, $str2, @array, %hash);
これはmy $str1; my $str2; my @array; my %hash;と同じです。
1つの変数の場合は面倒なのでふつうは括弧を書かないでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/11/23 22:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!