プロが教えるわが家の防犯対策術!

現在perlを使ってcgiのプログラムを組んでいるのですが、初歩的なことがよくわかっておらず、難儀しております。
調べてみたのですが中々理解できず困っているので助けてほしいです。
全てを書くと長くなってしまうので端折って書かせていただきます。

現在、局所変数のエラーで詰まっております。

送信プログラムのGETを使用していたのですが、セキュリティ的に危険ということがわかりまして、
POSTを使うように変更しました。
しかし、エラーが発生し、進まなくなってしまいました。

use strictを記述した後にエラーが発生し、原因を調べたところ、大域変数の使用を禁止してしまうという効果があることがわかりました。
検索して調べて出てきた対策として、全ての変数を定義して、myを記述すれば解決できるとあったので、myを記述してみたところ、エラーが発生してしまいました。

Can't declare null operation in my at ****.cgi line 38, near "tr/+/ /;"
Execution of /virtual/www/****.cgi aborted due to compilation errors.

というエラーが取れないです。
@array2 =~ tr/+/ /;
という記述に問題があるらしいということしかわからないのですが、よくわかりません。

すみませんが、教えて頂きたいです。

A 回答 (2件)

変換演算子(tr///)はスカラ変数にしか適用できません。


配列の場合、@array[n]=~tr/+/ /; $array[n]=~tr/+/ /; はOKですが @array=~tr/+/ /; はエラーになります。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
元々$だったところを無理やり@にした為こうなりました、やってみます。

お礼日時:2012/04/11 10:16

無闇にmyを付ければいいってものではありません。


ちゃんと意味と有効範囲を考えてください。

>Can't declare %s in my
> (F) スカラ変数、配列変数、ハッシュ変数だけが、字句スコープの変数として宣言できます。これらは、名前として通常の識別子を持たなければなりません

ということで、 「my」を付けた場所とか、(括弧の有無とかによる)適用する相手の指定が間違ってるのでは?
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
myについて、もう少し研究してみます。

お礼日時:2012/04/11 10:15

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