• ベストアンサー

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)は、何という名称ですか?また()で括ると、 使い回しができるのでしょうか? 教えて下さい。お願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 構文エラーのある行番号を知りたい

    いつもお世話になっております。 現在既存のPERLを解析して、初心者ながらもなおしています。 で、私が直すとCGIエラーが起こり、よくよく調べたら”;”がなかったり、use strict;を宣言しているのにmy(hoge)と書いていなかったり、でケアレスなミスがたくさんあり、それをつぶしていけば何とかわかるのですが、何せ、たくさん改造かけてしまったあとではそれだけでも見つけるのが大変です。そういうエラーがある場合、”○○行目に";"がありません”というメッセージがhtml上に表示されると便利なのですが、そういう機能はありませんか? よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Perl CGI 「外部ファイルをロードするには...」

    いつもお世話になります。今回もどうかお願いします。 今回は、futomi'sさんの高機能アクセス解析プロを改造して、データファイル 「organization.dat」と「ipaddr.dat」を共有したくて質問させて頂きます。 (取りあえず、前者だけ) どこかのサイトで、下記のようなコードがありました。 +--------------------- #!/usr/bin/perl my $host = "xxx.com"; //自サバの場合 my $file = "data/organization.dat"; use IO::Socket; print "Content-type: text/html\n\n"; my $files = "/"."$file"; my $remote = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "$host", PeerPort => "host(80)", ); unless ($remote){ die "cannnot connect to help daemon on $host"; } $remote->autoflush(1); print $remote "GET $files \n\n"; while (<$remote>){ print "$_"; } +--------------------- これをtest.cgiとしてサーバにアップすると、改行はしてくれないけど一応出力されます。 高機能アクセス解析(acc.cgi)で、organization.datを読込みしている部分は、 my %OrgList = &ReadDef('./data/organization.dat'); だと思います。 この部分が怪しいと思うのですが、どうしたら読込みできるでしょうか。 これ、ず~っと前から考えていましたが、もうギブアップです。 どうか教えて下さい。よろしく、お願いします。

    • ベストアンサー
    • Perl
  • datデータを細分化して、取り込むには

    いつもお世話になります。 有限会社 futomiさんの高機能アクセス解析プロの acc.cgi内に、次のようなコードがあります。 my %OrgList = &ReadDef('./data/organization.dat'); これは、dataフォルダ内にある、organization.datを読み出してる部分だと思います。 中身は、次のようなものです。 geidai.ac.jp=東京芸術大学,,東京都 yahoo.co.jp=ヤフー株式会社,, whoisで、まめに調べて記載していましたが、とうとう行数も3,000行位に 肥大化したので、学校系、ネットワーク系、一般会社系、官公庁系などと、 細分化する事は出来ないかと考えました。 organization.dat organization2.dat. ........ organization5.dat. Perlの改造など全くわからないので、一番簡単な方法を教えて下さい。 よろしく、お願いします。

    • ベストアンサー
    • Perl
  • myになっている理由

    はじめまして。私は数ヶ月前からperlスクリプトに興味を持ち 最近は公開されているスクリプトを見たり改造したりして楽しんでいます。 CGIゲームの箱庭諸島というものなんですが、 http://www.hakoniwa.net/hako/hako2/hako-main.txt この中の各種設定の中にmyが付いている項目と付いていない項目がありますが 一体このmyは何のために書かれているのでしょうか? 試しに各種設定のmyをすべて取り除いてみましたが問題なく動作しています。 私の認識ではmyはブロック{}の中で宣言しその中だけで有効ということだと 思っていますが、箱庭のスクリプトでmyを使ってる変数が{}の範囲外にあるのが わからないのです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • アクセス解析CGIへの不正アクセス?

    お世話になります。 ホームページにアクセス解析CGIをつけているのですが、アクセス解析CGIにアクセスされていました。 アクセスされたCGIはプログラムしか書かれていなく、webから直接アクセスしても真っ白な画面しか出ません。パスワードは別のCGIに書かれているし、解析結果も別のファイルにアクセスしないとわからないはずです(わかったからといって別に困ることもない気がしますが・・・)。 この人は何をしようとしていたのかお分かりになりますでしょうか? なにか対策をこうじるべきなのでしょうか?

    • 締切済み
    • CGI
  • アクセス解析やアクセスカウンターを作るなら?

    今はアクセス解析を、忍者ツールズというところからお借りしています。 またアクセスカウンターは別のところから借りています。 どちらも機能的には気に入ってるのですが、いずれはこういうのも自分で作ってみたいと欲が出てしまいました。 そこで勉強を始めたいわけですが、解析やカウンタの自作で調べてもいろいろな言語(?)が出てきてどれが良いのか分からず混乱しております。 忍者ツールズを見るとJAVAscriptを使ってるようにも見えますが、CGIで作るというようなことを書いてあるサイトが多いような気がします。 また、CGIにもperlというのがあったり他の言語も出てきて、結局何が一番良いのかが分かりません。 アクセス解析やカウンターを作る面で言うと、どれが一番良いのでしょうか?

  • 高機能なアクセス解析のCGIスクリプトを探しています

    CGI-BOYのアクセス解析はとても高機能で使いやすいの ですが、広告が表示されてしまいます。 そこでフリーのCGIスクリプトを サーバーに設置しようと思うのですが (サーバーではCGIを許可しています)、 いろいろ探したのですが、CGI-BOYみたいな高機能のアクセス解析が見つかりません。 いいアクセス解析のCGIがあれば教えてください。 無料のものでお願いします。

  • CGIのセキュリティ対策は?

    ホームページにフリーのCGIをつけているのですが、たまにアクセス解析を見ると、ホームページには目もくれずにCGIにばかりアクセスしている誰かがいます。 いきなりアクセス解析のプログラム本体にアクセスした後、パスワードをかけたアクセス解析の結果が見えるページに移ったりして、普通にホームページを訪れた人が行かないようなルートで来ます。 更新履歴用の掲示板に不正書き込みをされ(書き込み用のフォームにパスワードがかけてある)、CGIの名前を変えたらそのようなことはもうなくなったことがあります。 おかしなアクセスの仕方をするIDは掲示板に入れないようにしていますが、アクセス解析にはそういう機能がないので何もしていません。 少し心配なのでなにかセキュリティ対策をしたいのですが、こういうことに詳しくないのでなにをしたら良いのかわかりません。 ホームページのサーバは一般で、CGIしか使えません。 私もプログラムの知識はないので、一つ一つ調べないと理解できません。 どうかよろしくお願いします。

  • フレーム転送対応のアクセス解析

    フレームURL転送に対応したアクセス解析を探しています。 自分で設置するCGI(perl)でもレンタルでも構いません。 最低生ログとリンク元URL(1回しかアクセスが無くても表示される)、 できればOSやブラウザや解像度がわかるといいです。 レンタルではCGIBOYさんやDo-ASAP!さんを試してみたのですが フレーム転送には対応していませんでした。 自分で設置するCGIではKENT-WEBさんのAccess Repportの 改造版を試してみたのですが上手くログがとれませんでした。 何か良いサービスやCGIがありましたら教えてください。

    • 締切済み
    • CGI
  • My Pictures と My Music

    Win98SEです、現在「マイドキュメント」内の「My Pictures」ホルダーについてWin98カテゴリーで質問させてもらっております。Win98以後「My Pictures」と「My Music」が標準装備されているようなのですがこれは何か画像と音楽ファイルを保存するために特別な機能でもあるのでしょうか、新規作成ホルダーとは違いがあるのでしょうか、作った目的は初心者への親切心からなのでしょうか、そうなら「My Word」や「My Excel」ホルダーを作っておいてくれても良さそうですが、消しても消しても現れるなんて質問をされていた方もおられたようですが。