OS(win xp)を入れなおして、Active Perlをインストールしなおしましたがエラーが出ます

このQ&Aのポイント
  • OS(win xp)を入れなおして、Active Perlをインストールしなおしたところ、スクリプトの実行時にエラーが発生しました。
  • エラーメッセージによると、4行目に「use Benchmark;」という記述があると構文エラーとなっています。
  • Benchmark.pmは/usr/local/lib/に正しくインストールされているようですが、エラーの原因がわかりません。
回答を見る
  • ベストアンサー

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が入っているようなのですが、なにがいけないのでしょうか。

  • ytse
  • お礼率71% (88/123)
  • Perl
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • estea
  • ベストアンサー率44% (39/87)
回答No.2

ごめん。勘違いしてた。 その use 行の前の行が ;で終わってないとか そんなんじゃないですよね?

ytse
質問者

お礼

ありがとうございます。 ;はつけていたのですが、なんとくだらないことに、 #!usr/local/bin/perl を !#/usr/local/bin/perl と書いていたのが原因でした・・・;;

その他の回答 (1)

  • estea
  • ベストアンサー率44% (39/87)
回答No.1

use "Benchmark"; ならどうなりますか?

関連するQ&A

  • useとrequireでエラー

    初歩的な質問で失礼いたします。 下記の記述でプログラムを実行すると正常にプログラムが動きます。(省略以降は全く同一のプログラムです) ■実行問題なし1 #!/usr/local/bin/perl require 'cgi-lib.pl'; require 'jcode.pl'; --------省略--------------- ■実行問題なし2 #!/usr/local/bin/perl use strict; use DBI; --------省略--------------- しかし、下記の記述だとエラーが発生していまいます。 #!/usr/local/bin/perl use strict; use DBI; require 'cgi-lib.pl'; require 'jcode.pl'; --------省略--------------- エラーログは、下記の通りです。 Global symbol "$in" requires explicit package name at search.cgi line 21. Global symbol "$parameter" requires explicit package name at search.cgi line 23. Global symbol "$name" requires explicit package name at search.cgi line 23. Execution of search.cgi aborted due to compilation errors. requireとuseは同時に記述してはいけないのでしょうか? 同時に記述しないと目的のプログラムを実現する方法が大きく変わってきてしまうので、非常に困ってしまいます。 もし、ご存知の方がいらっしゃったら教えてください。 宜しくお願い致します。

  • perl niftyについて。use CGI;

    画像アップロードのスクリプトを作ろうと思っているのですが、 use CGI; という記述をすると、ここでエラーに引っかかります。 下はperl checkerでのエラー表示です Can't locate CGI.pm in @INC (@INC contains: /usr/local/lib/perl5/5.00503/sun4-solaris /usr/local/lib/perl5/5.00503 /usr/local/lib/perl5/site_perl/5.005/sun4-solaris /usr/local/lib/perl5/site_perl/5.005 .) at a.cgi line 10. BEGIN failed--compilation aborted at a.cgi line 10. 参考URLはここ http://www.topstudio.co.jp/~kmuto/html/node38.html niftyでは使えないようになってしまっているのでしょうか? また、CGI.pmを使わないファイルアップロードの仕組みを解説しているサイトを知っている方がいたら、教えてくださいませ。

    • ベストアンサー
    • CGI
  • Jcode.pmについて

    ネット上からダウンロードしてきたCGIプログラム内で、Jcode.pmを使用しているようなのですが、サーバ にUpしたところ、以下の様なエラーが表示されました。 ※1 Can't locate Jcode.pm in @INC (@INC contains: /usr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1 /usr/lib/perl5/site_perl/5.6.1/i386-linux /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl .) at access/accview.cgi line 68. ※2 BEGIN failed--compilation aborted at access/accview.cgi line 68. ちなみに、accview.cgi line 68には use Jcode; と書かれていました。 エラーの原因として、何がありますか? また、その解決法を教えていただきたいです。

    • ベストアンサー
    • Perl
  • 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
  • Movable Typeのインストールについて

    Movable TypeをWebサーバーに入れ、Movable Typeシステム・チェック [mt-check.cgi]画面でMovable Typeに必要なコンポネントがサーバーに入っていることをチェックしてOKでした。 そしてmt/index.htmlよりインストールを行おうとしたのですが、 Got an error: Unsupported driver MT::ObjectDriver::DBM: Can't locate DB_File.pm in @INC (@INC contains: C:\***\cgi-bin\mt\extlib lib C:/Perl/lib C:/Perl/site/lib .) at lib/MT/ObjectDriver/DBM.pm line 10. BEGIN failed--compilation aborted at lib/MT/ObjectDriver/DBM.pm line 10. Compilation failed in require at (eval 6) line 1. BEGIN failed--compilation aborted at (eval 6) line 1. とエラーが出てしまいます。mt-config.cgiの設定が間違っているのでしょうか? どなたか教えてください。よろしくお願いします。

  • perl2exeでuse encodingが使えない

    下記のようなスクリプトを作成しました。 スクリプト名は test_kanji.pl ---------------- use encoding("shift-jis"); print "表現\n"; ----------------- 上記を実行すると、正しく”表現”の文字が表示されます。 これをperl2exeで実行形式に変換すると 下記のエラーが表示され、期待した結果が得られません。 Converting 'test_kanji.pl' to test_kanji.exe Warning: Can't locate I18N/Langinfo.pm at C:\Perl\lib\encoding.pm line 41 @INC = c:\perl\userlib, C:\Perl\lib, C:\Perl\site\lib, . 又、強引にtest_kanji.exeを実行すると encoding: Unknown encoding 'shift-jis' at C:\Perl\userlib\test_kanji.exe line 1 BEGIN failed--compilation aborted at C:\Perl\userlib\test_kanji.exe line 1. のようなメッセージが表示され、”表現”が表示されません。 perl2exeでuse encodingは使用できないのでしょうか。

  • 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
  • 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
  • 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
  • Can't locate R.pm in @INC

    perl初心者でまた質問させていただきます。 CGIを作っているのですが、R.PMが使えなくて困っています。 USE R; とすると、以下のようなエラーが出てしまいます。 Can't locate R.pm in @INC (@INC contains: /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .) at /srv/www/htdocs/cgi/ringo.cgi line 5. BEGIN failed--compilation aborted at /srv/www/htdocs/cgi/ringo.cgi line 5. Premature end of script headers: ringo.cgi そこで、 locate R.pm で、場所を探しました。 /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/R.pm ということで、 use R '/usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/'; このように変えてみたものの、同じエラーです。ちなみに、CGIではなく、PERLのプログラムからだと、use R;で動作することは確認しました。 よろしくお願いします。

    • 締切済み
    • CGI

専門家に質問してみよう