重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

ネットでいろいろ調べていたらPerlモジュールのparamですべてのパラメーターを得る場合引数をいれずに
param()とすればいいとかかれていたので、すべてのパラメーターから,カンマがあればエラーにするという構文を書こうとしましたがうまくいきません。

@params = param();
foreach $param (@params) {
if($param =~ /\,/){&error('フォーム内に「,」は入力できません。');};

}
上のようにしてもスルーします。
間違っているのだと思いますが、すべてのパラメーターからマッチングさせたい場合どのようにすればいいのでしょうか?
よろしくおねがいします。

A 回答 (3件)

CGI.pmを利用している場合、各キーに対する値は


param(キーワード)で取り出せます。

なので元のスクリプトの修正は $param を利用して
if(param($param) =~ /\,/){&error('フォーム内に「,」は入力できません。');}

でよいかと思います。
ちょっと長いですが参考URLにCGI.pmの説明を載せています。

参考URL:http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI.pod
    • good
    • 0
この回答へのお礼

@params =param();
foreach $param (@params) {
if(param($param) =~ /\,/){&error('フォーム内に「,」は入力できません。');};
}
としたらばっちりうまくいきました。
いわれればそうだなーと思うのですが、おもいつきませんね・・・
助かりました。

お礼日時:2005/06/04 14:38

param();


の前に全角スペースがあります。
このために全体がエラーになっているのではないでしょうか?

ついでに、if(){}の後に;は必要ありません。(書いてもいいですが)
foreachの部分自体は間違っていないと思いますが、
どのフィールドでエラーがあったのか表示すると良いかと思います。
どのフィールドでということをしないのであれば、
1つエラーがあれば、抜けるようにした方がいいかもしれません。
    • good
    • 0
この回答へのお礼

No1の補足でも答えましたが値のほうを取得したいので当然カンマはでてきません・・・
どうすれば・・

お礼日時:2005/06/03 22:03

param()で得られるのはパラメータのキーワードの一覧です。


クエリがabc=123&def=456だとしたら
@paramsにはabcとdefが入ります。
    • good
    • 0
この回答へのお礼

まったくもって勘違いしていました。
私が得たいのは123のほうです。
パラメーター値を得たい場合はどうすればいいのですか?

お礼日時:2005/06/03 21:40

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