• ベストアンサー

CGIでsoft were errorが出ます。。。

CGIフォームを設置して試しに送信ボタンを押してみると、柿のエラーが出ます。 Software error: Can't modify subtraction (-) in scalar assignment at form.cgi line 38, near ");" Execution of form.cgi aborted due to compilation errors. 同じパターンのフォームを同じ階層上に置いてあり、そちらは上手く動作します。 今回のフォームは、多少項目をいじったため、CGIの方もそれにあわせて修正したのですが、どこがどう間違ってるのかわかりません。 アドバイスお願いいたします。 また、line 38, near というのは、CGIの中の38行目付近という意味でしょうか? その場合、38というのは、どこからどう数えればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#39970
noname#39970
回答No.1

38行目付近にエラー いじった際に括弧やセミコロンなどを消してしまったり式ではない記述(「->」とか)を崩してしまった疑いが有るから見てみたらどうかな。 エラー文の英語はとりあえず翻訳サイトでも使って概略を掴めば思ったより読める感じになるよ 38行目というのは テキストとして開いて38行目

konekochan_
質問者

お礼

ありがとうございました。 記述が間違ってたみたいで、色々やってみたらなおりました^v^

その他の回答 (1)

  • leap_day
  • ベストアンサー率60% (338/561)
回答No.2

僕もperlをいじり始めて間もないのでエラー文を読んでも何が違うのか理解できないことが多いけど 訳すと38行目ででスカラー割り当てでの減法(-)を修正することができないとなってるので 38行目くらいで『=』でなく『-』とかにしてるんではないでしょうか? >また、line 38, near というのは、CGIの中の38行目付近という意味でしょうか? テキスト文の上から38行目、)の近くということなんだけど空白行は認識されないのかたまに指摘行数と本来の行数が違うことがあります

konekochan_
質問者

お礼

ありがとうございました。 記述が間違ってたみたいで、色々やってみたらなおりました^v^

関連するQ&A

  • cgi-libを使って変数値渡しをしたいのですが

    cgi間の変数渡しの質問をしたのですが、うまくいかなかったので、調べてみると、 cgi-lib.pl'を使うことで簡単に値を渡せるということが分かりました。 ですが、 use lib '/home/www'; require 'cgi-lib.pl';# cgi-lib.plを呼び出す $test=1000; # 変数値渡し? form_input_post.cgi?name=$test; &ReadParse(*in); として、$testの値をform_input_post.cgiに渡そうとしたのですが。 コンパイルエラーが出てしまいました。 Can't modify constant item in scalar assignment at form_input_post.cgi line 49, near "$test;" syntax error at form_input_post.cgi line 49, near "$test;" form_input_post.cgi had compilation errors. というエラーです。 初歩的なミスな気がしますが原因がわからないので教えて頂きたいです。 よろしくお願いします。

    • 締切済み
    • CGI
  • perl cgiの局所変数について

    現在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/+/ /; という記述に問題があるらしいということしかわからないのですが、よくわかりません。 すみませんが、教えて頂きたいです。

    • ベストアンサー
    • CGI
  • apacheで動作してIISで動作しないcgi

    webに検索エンジン機能を付けようと思いいmsearchという検索cgiを入れたのですが、apacheサーバだとうまく動いてくれるのですが、iis(var4)だとエラーがでて動いてくれません。 (エラーの内容はSyntax errorとExecution of aborted dueto compilation errorsだったと思います) UNIX系webサーバで動いてiisで動かないCGIというのは存在するのでしょうか? また、あるとしたら何が原因で、対処法はあるのでしょうか? 非常に困っていますどなたか知恵をお貸し下さい。 お願いします。 msearch:http://www.kiteya.net/script/msearch/

    • ベストアンサー
    • CGI
  • script headers って?

    NO.202703の質問をしたものです。 1.Premature end of script headers: c:/www/public_htm/up_file.cgi 2.String found where operator expected at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 59, near "open INDD1, "$indd1"" 3.syntax error at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 58, near "open(INDD1, "$indd"" 4.Execution of c:\WWW\PUBLIC~1\UP_FIL~1.CGI aborted due to compilation errors. 2.3.4.のエラーについては、解決?できました。 (エラー行をコメント(#)にしたりしてるうちに・・・原因はよくわかりませんでしたが・・・) 1.のエラーの意味がわかりません。  script headers って何のことなんでしょうか? ※ このエラーログはApacheのサーバーのログです ※ このCGIは、フォームデータを受けっとてファイルを更新するようになっています。

    • ベストアンサー
    • Perl
  • use

    OS(win xp)を入れなおして、 Active Perl をインストールしなおしたのですが、 use Benchmark; と書いたスクリプトをコマンドプロンプトで走らせると、 "use" not allowed in expression at log.cgi line 4, at end of line syntax error at log.cgi line 4, near "use Benchmark" Execution of log.cgi aborted due to compilation errors. とエラーが出ます。OSを入れなおす前もたしかActive Perlを普通にインストールし、普通にベンチマークとっていたと思うので、「あれ・・?」って感じです。/usr/local/lib/の中にもちゃんとBenchmark.pmが入っているようなのですが、なにがいけないのでしょうか。

    • ベストアンサー
    • Perl
  • Perl で syntax error

    Perlを勉強中です。 ローカル環境(Win98 / Apache)でCGI(Perl(5.6.))をテストしようとすると、下記のようなエラーメッセージが出ます。 Premature end of script headers: c:/www/public_htm/up_file.cgi String found where operator expected at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 59, near "open INDD1, "$indd1"" syntax error at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 58, near "open(INDD1, "$indd"" Execution of c:\WWW\PUBLIC~1\UP_FIL~1.CGI aborted due to compilation errors. 多分、ファイルのopen定義が間違ってるような感じなんですが、SOURCEと1日にらめっこしてても、どうにもこうにも解りません・・・ よろしくお願いします。 === SOURCE CODE ================ open(INFILE, "$indd") || die "can't open : $!"; open(OUTDD1, ">$outdd1") || die "can't open : $!"; ※ OUTPUT file のほうは、エラーになってないみたいなのに・・・ ※ いちおう、簡単なCGI(メッセージの表示)は、実行できます。

  • eachとイテレーター

    each関数について質問させていただきます。perl5.8.0です。 eachに渡す引数を、ハッシュ“変数”ではなくハッシュ記法を直接指定する方法はないでしょうか。 具体的には、 %hash = (a=>1,b=>2); while (($k,$v)=each %hash) { ~ ではなく、 while (($k,$v)=each (a=>1,b=>2)){ ~ というように、eachに直接キーと要素を渡したいのです。 以下のようにいろいろ試したのですが、うまくいきません。 【1】 perl -e 'while (($k,$v)=each (a=>1,b=>2)){print "$k:$v\n";}' Type of arg 1 to each must be hash (not list) at -e line 1, near "2)" Execution of -e aborted due to compilation errors. 【2】 perl -e 'while (($k,$v)=each %{a=>1,b=>2}){print "$k:$v\n";}' syntax error at -e line 1, near "%{" Execution of -e aborted due to compilation errors. 【3】 perl -e 'while (($k,$v)=each %{(a=>1,b=>2)}){print "$k:$v\n";}' (何も出力されない) 【4】 perl -e 'while (($k,$v)=each %{{a=>1,b=>2}}){print "$k:$v\n";}' a:1 a:1 a:1 a:1 : (無限ループ) 予想では【3】の書き方が正しいような気がしましたが出力されず、そして【4】は少なくとも参照はできているようなのに、イテレーターが正しく動作していないような感じです。 (そもそもイテレーターというのは変数じゃなく無名ハッシュのようなものでも有効なのでしょうか?) また、試しにkeysで同じことをしてみると、 【5】 perl -e 'foreach (keys (a=>1,b=>2)){print "$_\n";}' Type of arg 1 to keys must be hash (not list) at -e line 1, near "2)" Execution of -e aborted due to compilation errors. 【6】 perl -e 'foreach (keys %{a=>1,b=>2}){print "$_\n";}' syntax error at -e line 1, near "%{" Execution of -e aborted due to compilation errors. 【7】 perl -e 'foreach (keys %{(a=>1,b=>2)}){print "$_\n";}' (何も出力されない) 【8】 perl -e 'foreach (keys %{{a=>1,b=>2}}){print "$_\n";}' a b keysでは【8】が期待どおりの動作をします。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • なぜ?

    劇空間パワフルリーグを設置しています。 改造解説サイトにて 以下の文を追加したらエラーがでました。 調べてみたら、syntax error at gekipawa.cgi line 1131, near "= ;" Execution of gekipawa.cgi aborted due to compilation errors. とでました。 1131行目の文章をみてもなんら変わりがありません。 因みにこれが1131番目の文章です。 unshift(@comments, $kakiko); 追加した文章は open(CF,"+<$commentfile") || &error('指定されたファイルが開けません。'); eval 'flock(CF,2);'; @comments = ; $kakiko = "8<><><>$times<>$news_kekka<><>\n"; unshift(@comments, $kakiko); splice(@comments, $com_max); truncate (CF, 0); seek(CF,0,0); print CF @comments; close(CF); eval 'flock(CF,8);'; 追加しているところはあっている筈です。 なぜなのでしょうか?

  • CGIがエラーになります。

    Kento Webさんで配布されているCGI「Shopping Cart」が Software error: Can't call method "param" on an undefined value at ./lib/menu_list.pl line 310. となり動きません。 **** 経緯 **** これまでは、自宅サーバーCentos6.5で運用していましたが、先日Centos7に入れ替えました。(/var/www/配下はそのまま使用) ・OSインストール後 ・SELinuxの無効化 ファイアウォール停止 ・yum -y install httpd (httpdインストール) ・yum -y install php php-mbstring (php、php-mbstringインストール) ・/etc/httpd/conf/httpd.conf (httpd設定ファイル編集)   Options Includes ExecCGI FollowSymLinks (CGI,SSIの許可)   AllowOverride All (.htaccessの許可)   AddHandler cgi-script .cgi .pl (CGIスクリプト.cgi .plの許可) ・ln -s /usr/bin/perl /usr/local/bin/perl (リンクをはる) この状態で確認するに「Shopping Cart」を含め他のCGIも動きません。 Internal Server Error  BEGIN failed--compilation aborted at  End of script output before headers ネットをググってみるにCGI.pmがインストールされていないようなので ・yum -y install perl-CGI その後確認するに、「Shopping Cart」はNGだが他のCGIはOKとなりました。 「Shopping Cart」のエラー Software error:  Can't call method "param" on an undefined value at ./lib/menu_list.pl line 310. 「Shopping Cart」と一緒に配布されている、「check.cgi」での動作チェックは、CGI.pmインストール前は、Internal Server ErrorでしたがCGI.pmインストール後全てOKとなりました。 パーミッションの確認も行いましたが間違いは無いようです。 よろしくお願いします。

    • 締切済み
    • CGI
  • CGIの設置について

    設置後にCGIページを開くと下記の様に表示されてしまいCGIが起動しません。 Software error: Global symbol "$ref_array_hash" requires explicit package name at perl/Cf/Part/Enquete.pm line 870. Global symbol "$ref_array_hash" requires explicit package name at perl/Cf/Part/Enquete.pm line 871. Compilation failed in require at index.cgi line 17. BEGIN failed--compilation aborted at index.cgi line 17. perl/Cf/Part/Enquete.pmの部分は 870|for (my $j=0;$j<scalar(@$ref_array_hash);$j++) { 871| $flag = @$ref_array_hash->[$j]{d_times}; です。 index.cgi line 17.の部分は 17|use Cf::Part::Enquete; と記載されております。 どの部分を訂正すれば動くのでしょうか?

    • 締切済み
    • CGI