• ベストアンサー

ホームページビルダーで作ったhtmlを、perlの中に入れたい。

burnの回答

  • burn
  • ベストアンサー率65% (25/38)
回答No.5

print<<"EOF";でエラーがでましたか。。 これだけだと何とも言えないんですが、 HTMLの後のEOFはラベルなので、スペースは空けないで下さい。 良くあるのは、プログラムを見やすくするために、階段式に記述していたりすると、ラベルも同じようにスペースを空けてしまったりします。 print<<"EOF";自体には、特に問題はないと思うので 考えられるのはその辺かな。 あと、気を付けなければならないのは、 Content-type: text/htmlの記述は必須ですが、 必ず<HTML>とは一行空行が必要になります。 この時、print<<"EOF";の中に入れてしまっても良いですが、間違えやすい場合は、この箇所だけ print "Content-type: text/html\n\n"; を使って、あとはprint<<"EOF";を使うと良いでしょう。 今出ているエラーは構文エラーなので、一行ずつ丹念にチェックすると、必ず解決します。 多分、printにからむ部分は、上記の2点位だと思うんですが・・・・ ソースコードが見れれば直ぐに判るんですけどね。 もし良かったら、print文のあたりのソースコード記載してくれませんか。

Iam2888
質問者

補足

どうしてもうまくいきません。ソースは以下の通りです。 #!/user/bin/perl open(IN,"data.csv"); #flock IN,2; @line = <IN>; #flock IN,8; close(IN); $cnt = 0; foreach(@line){ ($sina[$cnt],$jpg[$cnt],$pr[$cnt],$kakaku[$cnt]) = split(/\,/,$_); $cnt++; } #以上の変数を以下のhtmlに埋め込む予定 print "Content-type: text/html\n\n"; print<<"EOF"; <HTML> <HEAD> <meta http-equiv="Content-type" content="text/html; charset=shift_jis"> <META name="GENERATOR" content="IBM HomePage Builder 2001 V5.0.0 for Windows"> <TITLE>あいむ</TITLE> <STYLE type=text/css> <!-- input ,textarea ,select {color:#333333; background-color: #ffffff; border-top: #888888 1px solid; border-right: #888888 1px solid; border-left: #888888 1px solid; border-bottom: #888888 1px solid;} a{text-decoration:none;color:#004488;} a:hover{text-decoration:underline; color:#004488;} body ,tr ,td {font-size:10 pt;} big {font-size:12 pt;} small {font-size:8 pt;} //--> </style> </HEAD> <BODY BACKGROUND="" BGCOLOR="#ffffff" TEXT="#333333" LINK="#004488" VLINK="#888888"> <center> <form method="POST" action="r_formmail.cgi"> <TABLE width="651"> <TBODY> <TR> <TD width="172" height="148"> <TABLE width="161"> <TBODY> <TR> <TD align="center" height="22" bgcolor="#00ff00">■てれび■</TD> </TR> <TR> <TD align="center" height="106" bgcolor="#00ff00"><IMG src="fukui/am/sumpl.jpg" width="126" height="84" border="0" align="middle"></TD> </TR> </TBODY> </TABLE> </TD> <TD width="296" colspan="2" height="148"> <TABLE width="423"> <TBODY> <TR> <TD colspan="2" bgcolor="#00ff00" valign="top" width="500" align="left" height="88"><BR> ・そば、天ぷら、<BR>  小鉢(日替わり)、ビール<BR> </TD> </TR> <TR> <TD height="40" bgcolor="#00ff00" colspan="2" width="500" valign="middle" align="center">¥1200    ご注文 <SELECT name="data4"> <OPTION value="0"> 0</OPTION> <OPTION value="テレビ×1"> 1</OPTION> <OPTION value="テレビ×2"> 2</OPTION> <OPTION value="テレビ×3"> 3</OPTION> <OPTION value="テレビ×4"> 4</OPTION> <OPTION value="テレビ×5"> 5</OPTION> <OPTION value="テレビ×6"> 6</OPTION> <OPTION value="テレビ×7"> 7</OPTION> <OPTION value="テレビ×8"> 8</OPTION> <OPTION value="テレビ×9"> 9</OPTION> <OPTION value="テレビ×10">10</OPTION> <OPTION value="テレビ×11" selected>11</OPTION> <OPTION value="テレビ×12">12</OPTION> </SELECT></TD> </TR> </TBODY> </TABLE> </TD> </TR> </TBODY> </TABLE> <BR> <table><tr><th bgcolor="#888888"> <b><font color="#eeeeee"><big>■ お届け先 ■</big></font></b> </tr> <tr><td> <br> <ul> <li>以下の項目に記入してください。(必須)と書かれた項目には必ずご記入願います。 <li>「送信」ボタンを押すと内容確認画面に移ります。 </ul> <FONT color=#404080><B>【お名前】</B></FONT>まとめてのご注文は代表者のお名前をどうぞ。<br> <INPUT type="text" name="data1" size="32" value="" onblur="this.style.backgroundColor='';" onfocus="this.style.backgroundColor='#f7f7f7'; "> <br> <FONT color=#ff4422><B>※</B></FONT><SMALL>必須項目です。必ず記入してください</SMALL><BR> <BR> <FONT color="#404080"><B>【電話番号】</B></FONT>ハイホン(-)は記入しないでください。<BR> <INPUT type="text" name="tel" size="24" onblur="this.style.backgroundColor='';" onfocus="this.style.backgroundColor='#f7f7f7'; "><BR> <FONT color="#ff4422"><B>※</B></FONT><SMALL>必須項目です。必ず記入してください<BR> </SMALL><br> <FONT color=#404080><B>【住所】</B></FONT>市町村から番地までご記入ください。<br> <INPUT type="text" name="data2" size="44" value="" onblur="this.style.backgroundColor='';" onfocus="this.style.backgroundColor='#f7f7f7'; "> <br> <FONT color=#ff4422><B>※</B></FONT><SMALL>必須項目です。必ず記入してください</SMALL><BR> <br> <FONT color=#404080><B>【住所2】</B></FONT><FONT color="#000000">会社・施設・部署・ビル名・階数等</FONT><br> <INPUT type="text" name="data3" size="77" value="" onblur="this.style.backgroundColor='';" onfocus="this.style.backgroundColor='#f7f7f7'; "> <br> <FONT color=#ff4422><B>※</B></FONT><SMALL>配達先が住宅以外の場合、なるべく詳しく記入してください。 【例】○○株式会社 1F事務所</SMALL><BR> <HR align=center color=#444444 width="100%"> <center> <input type="submit" value="送信する" name="submit">  <input type="reset" value="リセット" name="reset"> </CENTER> </td></tr></table> </FORM></center> </body> </html> EOF

関連するQ&A

  • パールが実行されない!!

    パールを実行させようとしたのですが、以下のような結果がブラウザで返されてしまいます。 Method Not Allowed The requested method POST is not allowed for the URL /aaa/bbb/ccc/ddd.pl. そこで、元々のHTML内のPOSTをGETに変えてみたところ、今度はddd.plを上記から実行するか、保存するかのダイアログが出てきてしまいます。 <FORM method=POST onsubmit="return check()" action="../../cgi-bin/ddd.pl">               ↓ <FORM method=GET onsubmit="return check()" action="../../cgi-bin/ddd.pl"> サーバー側のパールの設定(パールが動作しない等)なのでしょうか?

  • perlでpostが受け取れない

    perlでCGI を作ってみましたが、POSTでデータが受け取れません。GETは問題ないのですが。read stdin が NULL になります。 ローカルのapache2でテストしています。$ENV{'CONTENT_LENGTH'}がゼロのためだと 思いますが対応が分かりません。 OS:CENTOS6 (VirtualBox) APACHE2.2 Perl 5.10 /var/www/cgi-bin で実行。 呼び出しは <form action='localhost/cgi-bin/uptag.cgi' method='post'"> です。

    • 締切済み
    • CGI
  • perlがうごきません

    htmlファイルには <html> <form action="form2.cgi" method="get"> 食品名1<input type="text"name="form1"> <br> 食品名2<input type="text"name="form2"> <input type="submit"value="送信"> </form> </html> cgiファイルには #! /usr/bin/perl require "cgi-lib.pl"; &ReadParse(); print "Content-type:text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>フォーム</title>\n"; print "</head>\n"; print "<body>\n"; print "おいしい$in{'form1'}\n"; print "まずい$in{'form2'}\n"; print "</body>\n"; print "</html>\n"; exit; cgi-lib.plはサーバーにいれております。 どうしてうごかないのでしょうか。 perlの場所も正確です。

    • ベストアンサー
    • Perl
  • CGI間のデータ送信について(perl)

    perlのcgiで詰まってしまったので質問します。 現在困っていることは、cgiからcgiへの変数の値の受け渡しについてです。 色々調べてやってみたのですが、うまくいきません。 送信側で print "<form action = \"sendmail.cgi\" method=\"post\">"; print "<A href =\"sendmail.cgi?$array1[0]&$array1[1]&$array1[2]&$array1[3]\">sendmail.cgi</A>"; print "<input type=\"submit\" value=\" ボタンです。 \">"; print "</form>"; として 受信側で # postでもgetでも受信できるようにする if ($ENV{'REQUEST_METHOD'} eq "GET") { $data = '1'; $testmsg = "GETで受信"; $formdata = $ENV{'QUERY_STRING'}; print("$formdata<BR>"); } elsif ($ENV{'REQUEST_METHOD'} eq "POST"){ # こちらを使用している $data = '2'; $testmsg = "POSTで受信"; $length = $ENV{'CONTENT_LENGTH'}; read(STDIN,$formdata,$ENV{'CONTENT_LENGTH'});# $dataに受信する print("$formdata<BR>"); } else { $data = '3'; $testmsg = "受信することができませんでした。<BR>"; } としてpostにて受信しようとしています。 postのif文には入ったようなのですが、データが空っぽで何も入っていないようなのです。 何が原因なのでしょうか?助けてほしいです。

    • 締切済み
    • CGI
  • name属性をperlに引き継ぎたい

    FORMタグを使って以下のようにCGIに処理を引き継ぎます。 <FORM METHOD="post" ACTION="./xxxx.cgi"> <INPUT name="フリガナ" size="30" type="text"> その場合、入力された値ではなく、name="フリガナ"の 「フリガナ」をperlで受け取りたいのですが、方法がわかりません。 ご存知の方ご教示の程よろしくお願いします。

  • perlがうごきません

    <html> <head> <title>form3</title> </head> <body> <form action="form3.cgi" method="post" name="form3"> <input type="text"name="form3"> <input type="submit"value="送信"> </form> </body> </html> ::::::::::::::::::::::::::::::: #! /usr/bin/perl if($ENV{"REQUEST_METHOD"} eq "GET"){ $str=$ENV{QUERY_STRING"}; }else{ read(STDIN, $str, $ENV{"CONTENT_LENGTH"}); } $str=~ tr/+/ /; $str=~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c", hex($1))/eg; foreach(split(/&/, $str)){ my ($key, $value)=split(/=/, $_); $data{$key}=$value; } print "Content-type:text/html\n"; print "\n"; print "<html>\n"; print "<head><title>form3</title></head>\n"; print "<body>$data{'form3'}</body>\n"; print "</html>\n"; exit; :::::::::::::::::::::::::::::::: どうしてもうごきません。 どこかスクリプトがまちがっているのでしょうか。 パールのパスはあっています。

    • ベストアンサー
    • Perl
  • Perlがサーバー上でうごきません

    htmlファイルには <html> <form action="form2.cgi" method="get"> 食品名1<input type="text"name="form1"> <br> 食品名2<input type="text"name="form2"> <input type="submit"value="送信"> </form> </html> cgiファイルには #! /usr/bin/perl require "cgi-lib.pl"; &ReadParse(); print "Content-type:text/html\n"; print "\n"; print "<html>\n"; print "<head>\n"; print "<title>フォーム</title>\n"; print "</head>\n"; print "<body>\n"; print "おいしい$in{'form1'}\n; print "まずい$in{'form2'}\n; print "</body>\n"; print "</html>\n"; exit; cgi-lib.plはサーバーにいれております。 どうしてうごかないのでしょうか。

    • ベストアンサー
    • Perl
  • perl 変数 代入

    恐れ入ります。 Perlで、フォームから送信して、変数に代入したいのですがうまくいきません。 print qq!<form action="./xxx.cgi" method="get">!; opendir(DIRHANDLE, "./xxx"); foreach(readdir(DIRHANDLE)){ next if /^\.{1,2}$/; print qq! <input type="checkbox" name="$_" value="$_"> <input type="submit" value="送信"></form> とし、ディレクトリ内のフォルダ名をnameに格納してxxx.cgiへ送信します。 xxx.cgi側では、 #!/usr/bin/perl use cgi; $form = CGI->new; として、送信されたデータを次々と代入したいのですが、どのようにしたらよいでしょうか。

    • ベストアンサー
    • Perl
  • (Perl)ReadParseによるハッシュへの格納について

    PerlのReadPerseについて質問させてください。 以下少々長いですが、過程を書きます。 <form>タグにより、入力フォームのページをHTMLで作成したとします(form.html)。 その際、<form method="post" action="form.cgi"> と入力しておいて、別途form.cgiを作成するとします。 form.htmlには、<form>タグ内のname属性で、それぞれ'weight' 'height' 'age'という三種類のデータを入力してもらって、取得するようにしています。 そして<input type="submit" value="登録">による、 登録ボタンを押すことで、 form.cgiに処理をさせるようにしています。 form.cgiの中身ですが、まず、最初の三行を書きます。 #!/usr/local/bin/perl require 'cgi-lib.pl'; &ReadParse(*form); となるのですが、わからないのが、 三行目の &ReadParse(*form); です。 サブルーチンReadParseを引数*formで、 cgi-lib.plから呼び出しているということはわかるのですが、いきなり*formという形で、ハッシュを登場させているあたりがわかりません。(この際、ハッシュ名の前の%を*に変えなければならないことは、一応知っております。理由はわかりませんが。) そこで質問なのですが、 いきなり、ハッシュであるformを登場させていいものなのでしょうか?? 以下、form.cgiの内容です。 #!/usr/local/bin/perl require 'cgi-lib.pl'; &ReadParse(*form); $name=$form{'weight'}; $sex=$form{'height'}; $megane=$form{'age'}; print "Content-type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "体重:${weight}<br>\n"; print "身長:${height}<br>\n"; print "年齢:${age}<br>\n"; print "</body>"; print "</html>"; _END_

    • ベストアンサー
    • CGI
  • アクセス元URLによって振り分ける方法

    アクセス元がアドレス1だった場合は<FORM name="form" action="1.cgi" method="POST">を表示 アクセス元がアドレス2だった場合は<FORM name="form" action="2.cgi" method="POST">を表示 アクセス元がアドレス3だった場合は<FORM name="form" action="3.cgi" method="POST">を表示 アクセス元がアドレス4だった場合は<FORM name="form" action="4.cgi" method="POST">を表示 アクセス元がアドレス5だった場合は<FORM name="form" action="5.cgi" method="POST">を表示 というように、50以上のアクセス元によって別々のCGIに送信するよう全振り分けたいのですが、方法がわかりません。 どなたかご教授宜しくお願いいたします。

    • ベストアンサー
    • Perl