データ入力の際に、テキストボックスはもちろん
ラジオボタンやチェックボックスも使用したいのです。
が、テキストボックスだけだと上手く表示されるのですが、
ラジオボタンやチェックボックスを追記すると、うまくいきません。

print "<input type="radio" name="性別" value="男性">男性 \n"; 
print "<input type="radio" name="性別" value="女性">女性 \n";
と表記すると、エラーになります。
エラーメッセージは、
Bareword found where operator expected at \db_Beta1.cgi line 698, near ""
とでます。POST形式でテキストは送信しています。

なにが間違っているのかおしえていただけませんか?よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ダブルクォーテーションを¥マークでエスケープしてないんじゃエラーになって当たり前です。



例えば上の例なら、
print "<input type=\"radio\" name=\"性別\" value=\"男性\">男性 \n";
としないと、Perlインタプリタは最初の「radio」の前までをprintして、「radio」以降はprint文に対する変数指定か何かだと解釈しますから、当然エラーになります。
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
なんだかとっても基本的なとこで躓いていたようで、お恥ずかしいです・・・
‘‘r(^^;)ポリポリ

お礼日時:2001/04/10 14:06

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

このQ&Aと関連する良く見られている質問

QNAME が同じ複数の INPUT データの空判定

お世話になっております。

<FORM>
<INPUT TYPE="text" NAME="A">
<INPUT TYPE="text" NAME="A">
<INPUT TYPE="text" NAME="A">
</FORM>

という形で3つの INPUT からデータを1つの変数に受け取り、その上で3つの内のいずれか(特定はできなくても構いません)が入力されていない場合に、エラーを返したいのですが、どのようにしたら良いでしょうか。

ご教示宜しくお願い致します。

Aベストアンサー

CGIモジュールを使えば至極簡単です(何使っても簡単ですが)

use CGI qw(:cgi);
my $q = new CGI;
my @A = $q->param('A');
unless(@A){
print '@Aは空でした'
}
はいどうぞ。

Qタグの中のname, value値の取得

ある文字列中に次のほぼ同値なinputタグ、
1:<input type="text" name="A" value="B">
2:<input type='text' name='A' value='B'>
3:<input type=text name=A value=B>

がある場合、この中からtext, A, B を抽出しようと思っています.
(さらに、1,2のA, B に半角スペースが含まれる場合も考慮)

自分なりの方法の概略は、
$_ = $str;
~ /(<input[^>]*?>)/;
$tag = $1;

として、<input・・・>を得て、

$tag =~ /name=[\"']{0,1}([^\"']*?)[\"']{0,1}[\s\t>]/i
$name = $1;

$tag =~ /value=[\"']{0,1}([^\"']*?)[\"']{0,1}[\s\t>]/i
$value = $1;

としていたのですが、nameとvalue値が\sを含む場合や、<input>タグの中の"と"の間に > が含まれる場合に正しく動作しません。
何いい方法はないでしょうか.

ある文字列中に次のほぼ同値なinputタグ、
1:<input type="text" name="A" value="B">
2:<input type='text' name='A' value='B'>
3:<input type=text name=A value=B>

がある場合、この中からtext, A, B を抽出しようと思っています.
(さらに、1,2のA, B に半角スペースが含まれる場合も考慮)

自分なりの方法の概略は、
$_ = $str;
~ /(<input[^>]*?>)/;
$tag = $1;

として、<input・・・>を得て、

$tag =~ /name=[\"']{0,1}([^\"']*?)[\"']{0,1}[\s\t>]/i
$name = $1;

$tag =...続きを読む

Aベストアンサー

正規表現だと面倒そうだし、応用も利くのでHTMLを解析するモジュールを使ってみては?

以下、ちょっと長いけど例。

my $str = <<HTMLDATA;
<input type="text" name="A" value="B">
<input type='text' name='A' value='B'>
<input type=text name=A value=B>
HTMLDATA

use HTML::Parser();
my $parser = HTML::Parser->new(
api_version => 3,
start_h => [\&startTag, "tagname,attr"],
);
$parser->parse( $str );
$parser->eof;
exit;

sub startTag {
my($tagname,$attr) = @_;
if($tagname eq 'input') {
print 'name="',$attr->{name},'" value="',$attr->{value},"\"\n";
}
}

参考URL:http://homepage3.nifty.com/hippo2000/perltips/html/Parser.htm

正規表現だと面倒そうだし、応用も利くのでHTMLを解析するモジュールを使ってみては?

以下、ちょっと長いけど例。

my $str = <<HTMLDATA;
<input type="text" name="A" value="B">
<input type='text' name='A' value='B'>
<input type=text name=A value=B>
HTMLDATA

use HTML::Parser();
my $parser = HTML::Parser->new(
api_version => 3,
start_h => [\&startTag, "tagname,attr"],
);
$parser->parse( $str );
$parser->eof;
exit;

sub startTag {
my($tagname,$attr) = @_;
if(...続きを読む

Qエラーログ「\x8ew\x92\xe8・・・」はどういう意味?

以下のような意味不明のサーバー「エラーログ」が出るのですが、何を意味しているのでしょうか?

スクリプト(フォームの入力値を取得するプログラム)の動作上はなんら問題はないのですが、必ず出るエラーなので、その意味が知りたいのです。

-------------
[Wed --] [error] [client --] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83p\x83X\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r, referer: http://127.0.0.1/fmail.cgi
[Wed --] [error] [client --] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83p\x83X\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r, referer: http://127.0.0.1/fmail.cgi
--------------

ActivePerl-5.6.1.638-MSWin32
Apache/2.0.55(Win32)

以下のような意味不明のサーバー「エラーログ」が出るのですが、何を意味しているのでしょうか?

スクリプト(フォームの入力値を取得するプログラム)の動作上はなんら問題はないのですが、必ず出るエラーなので、その意味が知りたいのです。

-------------
[Wed --] [error] [client --] \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83p\x83X\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B\r, referer: http://127.0.0.1/fmail.cgi
[Wed --] [error] [client --] \x8ew\x92\xe8\x...続きを読む

Aベストアンサー

Shift-JISの生バイト配列が文字になったモノですね。
デコードしてみると、

「指定されたパスが見つかりません」

となりました。
使用しているスクリプト中の、ファイルバスの部分を確認してみてください。
存在しないディレクトリやファイルを指定している部分があるのではないでしょうか。

Qチェックボックスのvalue値の取得について

過去の質問にいくつか似たようなものはあったのですが、解決出来ませんでしたので質問させて頂きます。cgiでページを作成しています。今回処理したい内容は、一覧表の複数のチェックボックスから、オンになっているvalue値を取得し、その値に一致するナンバーを使って別のファイルのデータを削除するといった処理です。

== html一部内容 ==
<form action='update.cgi' method='POST'>
<input type='checkbox' name='del_0' value='0'>
<input type='checkbox' name='del_1' value='1'>
<input type='checkbox' name='del_2' value='2'>
<input type='submit' name='submit' value='削除'>
</form>

== update.cgiの一部内容 ==
for($loop=2,$loop>=0,$loop--)
{
$del[$loop]=$in{'del_$loop'};
}
データ数が多いのでループさせてすべてのチェックボックスのvalue値を取得したいと思っています。チェックボックスがオフの場合の扱いがいまいち分かっていません。一つずつ例えば
$del_1=$in{'del_1'};
と代入していくとonのもののみ取得できます。しかしループにするとonの値も変数に入りません。
どんな方法でも良いので、すっきりとチェックボックスのvalue値を変数に取得する方法を教えてください。お願い致します。M(v_v)M

過去の質問にいくつか似たようなものはあったのですが、解決出来ませんでしたので質問させて頂きます。cgiでページを作成しています。今回処理したい内容は、一覧表の複数のチェックボックスから、オンになっているvalue値を取得し、その値に一致するナンバーを使って別のファイルのデータを削除するといった処理です。

== html一部内容 ==
<form action='update.cgi' method='POST'>
<input type='checkbox' name='del_0' value='0'>
<input type='checkbox' name='del_1' value='1'>
<input type='...続きを読む

Aベストアンサー

>ご指摘の方法ですと、チェックボックスのvalue値ではなくそのまま0,1,2が代入されてという感じになるような気がするのですが・・・

テスト用に代入しているだけです。
説明不足ですいません。
私が言いたかったのは「$in{'del_$loop'}」では「$loop」の変数が展開されずにただの文字列として扱われてしまう点です。
シングルクォーテーションではなくてダブルクォーテーションでないとまずいということです。

Qフォームに

Perl で書いたフォーム要素に画像ボタンを付けたいのですが、画像が表示されません。
次のように、next と prev のボタンに二つの方法で画像を呼び出そうとしましたが。。。
Print <<EOD;
<BODY>
<FORM method="POST" action="germJ.cgi" name="kdicFORM" target="frame1">
<INPUT type="image" SCR="http://localhost/dic/ArrowMacPrev.GIF">
<INPUT type="image" SCR="/ArrowMacNext.GIF">
----
</FORM>
EOD
URL をじかにアクセスするとIE6.0は表示します。

すみませんが、どなたか御教示をお願いします。
さらに、画像が表示された後のこと、つまり「送信」されるデータ(X=nnn, Y=nnn)をどうすればキャッチしてnext/prevの分岐を実現できるか、はつぎの問題なんですが。。
 Perl 固有の問題というよりか、javascriptの問題みたいで済みません。

Perl で書いたフォーム要素に画像ボタンを付けたいのですが、画像が表示されません。
次のように、next と prev のボタンに二つの方法で画像を呼び出そうとしましたが。。。
Print <<EOD;
<BODY>
<FORM method="POST" action="germJ.cgi" name="kdicFORM" target="frame1">
<INPUT type="image" SCR="http://localhost/dic/ArrowMacPrev.GIF">
<INPUT type="image" SCR="/ArrowMacNext.GIF">
----
</FORM>
EOD
URL をじかにアクセスするとIE6.0は表示します。

すみませんが、どなたか御...
続きを読む

Aベストアンサー

scrじゃなくてsrcだと思います。


おすすめ情報