• ベストアンサー

PerlのDEBUG

Perlを使ったCGIを書いているときにテスト環境としてHTTPDでLOCALHOSTを 使ってテストしています。動作するかどうかは、これでわかりますが 動作しないときに何が悪いのか(たとえばセミコロンの書き忘れなど) 調べる方法、例えばCのLINT(文法をチェックする)のようなものは どこかに無いでしょうか???

  • CGI
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • k-ji
  • ベストアンサー率57% (11/19)
回答No.2

通常テストしている環境は、Winですか?、Linuxですか? Winの場合: HTTPDを使ってテストしているとの事なので、Perlがインストール されているでしょうから、 1)まず、DOSプロンプトを起動してください。 2)例えばC:¥perlにインストールしてある場合DOSプロンプト上で set PATH=c:\perl\bin;%PATH% としてパスを通してください。 (Dosプロンプトの起動バッチやC:ドライブのautoexec.bat等にパスを 通すように記述しておくと便利です。 3)次にそのファイルが置いてあるディレクトリに移動してください。 例:d:¥myhp¥cgiと言うところにスクリプトが置いてあるとき d: cd \myhp\cgi とやって移動します。 4)そしてスクリプトを、DOSプロンプト上で動かしてください。 例:test.cgi というスクリプトをテストする場合 perl test.cgi としてして下さい。また、 perl -w test.cgi とすればより細かいワーニングが出るようになります。 Linuxの場合もほとんど同じで、CUI上でスクリプトを動かしてやれば OKです。

その他の回答 (1)

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.1

HTTPDのエラーログに出ていませんか? ApacheWin32の例だと [Sun Dec 03 12:19:27 2000] [error] [client 192.168.0.3] Not enough arguments for getnetbyname at c:/hp/cgi-bin/test.cgi line 7, near "getnetbyname;" こんな感じでログに入っていると思います。 あとは Perl に直接ソースを指定してチェックさせる方法もあったと思います。

関連するQ&A

  • mod_perlとディレクトリ

    以下のhttpd.confでAliasをコメントアウトして、 http://localhost/a/にアクセスすると、 Perlの【$ENV{MOD_PERL}】の部分が【mod_perl/2.0.2】と表示されますが Alias / c:/usr/Apache2/VirtualHost/mylink-info/public_html/a/ を有効にして、 http://localhost/にアクセスすると、 Perlの【$ENV{MOD_PERL}】の部分が【】となり、どうもmod_perlで動作していないです。 そうかといって、 <Location /a>を<Location />として全体をmod_perlすると sample.htmlなど cgi以外が正しく動作しないので、困っています。 mod_perlで動作するのは特定のディレクトリ(例えば /cgi-bin)の下限定として、 アクセス時に http://localhost/のようにあたかもpublic_htmlの下にあるように動作したいです。 #Alias / c:/usr/Apache2/VirtualHost/mylink-info/public_html/a/ #=== conf/httpd.conf ( mod_perl 2.x ) <IfModule mod_perl.c> LoadFile "C:/usr/local/bin/perl58.dll" PerlRequire "C:/usr/Apache2/conf/startup.pl" <Location /a> PerlSendHeader On SetHandler perl-script PerlResponseHandler ModPerl::PerlRun #PerlHandler Apache::Registry Options +ExecCGI PerlOptions +ParseHeaders Allow from all </Location> </IfModule>

    • ベストアンサー
    • Perl
  • CGIのテストに失敗

    ただ今ホームページを作成中で、CGIに興味を持つようになりました。 簡単なところから実際にやってみようと思い、Active PerlとAN HTTPDをダウンロードしてインストールまで完了。 ネットのCGI講座や入門といったサイトを参考にしながら、AN HTTPDの設定はできたのですが、簡単なはず?のCGIのテストに失敗してしまいました。 以下のような記述でファイル名をtest.cgiにして、httpd.exeと同じフォルダのcgi-binというフォルダに保存、http://localhost/cgi-bin/test.cgiでブラウザから開こうとしたのですが、ダメでした。 #!C:\Perl\bin print "Content-type: text/html\n\n" ; print "Hello, World!" ; 何がまずかったのかわかりません。Active Perlはデフォルトでどこもいじっていません。環境変数のPathもC:\Perl\bin\になっているのですが…。いろいろと見てまわったのですが間違いがわかりません。 どなたか教えていただけると幸いです。

    • ベストアンサー
    • CGI
  • Xamppでperlが表示されない

    Linux初心者です。 ubuntu8にXamppインストールして、htdocsにtest.cgiを入れて、http://localhost/test.cgiにアクセスすると、 「Internal Server Error」がでます。 test.cgiの内容は 「 #!/usr/local/bin/perl 」 の一行のみです。 ちなみに、おなじhtdocsディレクトリにPHPのファイルを入れてテストしたところ正常に動作しました。 ご教示願います。

  • perlの設定の方法

    お世話になります。 コマンドプロンプトで実施すると C:\>perl d:\wwwroot\test.cgi hello world と返ってきますが、 URLにhttp://localhost/test.cgiとすると Forbidden You don't have permission to access /test.cgi on this server. と返ってきます。 windowsですので、permissionと言われても何を設定するのか・・・ 何の設定を実施すれば、CGIが動くのか教えて下さい。 まったく検討がつきません。よろしくお願いします。 環境は以下のとおりになります。 Apache/2.0.49 (Win32) [C:\Program Files\Apache Group\Apache2]にインストール PHP/4.3.4 [c:\php]にインストール This is perl, v5.6.0 built for MSWin32-x86-multi-thread [C:\usr]にインストール Windows XP pro SP2 test.cgiの中身 #!/usr/bin/perl # test print "hello world";

    • ベストアンサー
    • Perl
  • apache1.3とperlでCGI

    超初心者です。 windows XPでapache1.3 と active perl 5.1.2をインストールして、 CGIを動作させたいと考えています。 http://localhostを入力してapacheの起動画面は表示されていること を確認しました。 その後httpdconfに下記を追加しました。 AddHandler cgi-script .cgi .pl AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .pl <Directory "C:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> C:\Program Files\Apache Group\Apache\cgi-binに既存で存在する printenv.plを実行しようとするとファイルのダウンロードの画面が出てきて 実行されません。printenv.plは下記のようにperl.exeへのパスだけ変更しました。 #! C:/Perl/bin/perl ## ## printenv -- demo CGI program which just prints its environment ## print "Content-type: text/plain\n\n"; foreach $var (sort(keys(%ENV))) { $val = $ENV{$var}; $val =~ s|\n|\\n|g; $val =~ s|"|\\"|g; print "${var}=\"${val}\"\n"; } どうすればCGIが実行できるようになるのでしょうか? ご教授ください。よろしくお願い致します。

    • ベストアンサー
    • CGI
  • 1行目、Perlの宣言

    ActivePerlをC:\Perlにインストールしました。するとperl.exeはC:\Perl\bin\perlにありました。 そこでCGIファイルの1行目に   #! C:/Perl/bin/perl としましたが、実行してみるとコードがそのまま表示されてしまいます。 「Perl」と大文字を含むからかと「P」を小文字に変えてみたり、あるいは「/」を「\」にしてみたりと試しましたが、やはり機能しません。 httpd.confは教科書に書いてある通りに書き換えました。 何が原因でCGIがまともに動かないのでしょう。 OSはWindows Vista、Apacheは2.0.54、ActivePerlは5.8.7.813です。

    • ベストアンサー
    • CGI
  • perlによる外部プログラムの実行

    perlにてCGIを作成しています。 ブラウザでCGIにアクセスしたとき、gpgというコマンドプロンプトの プログラムを実行したいと考えており以下のようなプログラムを作成しました。 test.batを単体で実行したときにはうまく動作するのですが、CGIを介して 実行するとうまくいきません。 CGIのプログラム (WriteCmd.cgi) **********************************  #!c:/Perl/bin/perl  print "Content-type: text/html\n\n";  print "test.batの実行\n<br>";  system("test.bat");  exit; ********************************** test.bat **********************************  gpg --batch --gen-key sample.txt ********************************** またtest.batの内容を **********************************  mkdir test ********************************** としてみるとディレクトリがちゃんと作成できるので WebサーバやPerlのパスの問題ではないと考えております。 よい解決方法がありましたら教えていただけると助かります。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • Perl言語のオンライン文法チェッカーについて

    以前、こちらのサイトで『httpd の1.42pで表示出来ないCGIがあるのですが・・・ 』と質問させていただいたものです。 その時の同じcgiプログラムなのですが、現在もhttpd上では表示できません。サーバー上では問題なく動いています。 今年8月にレンタルサーバーを移行する事になり、念の為、cgiに不具合がないか調べている所です。 しかし、じっくり見直してみたのですが、どうしてもどこがいけないのか見つけ出せません。 そこで、インターネットで調べた所『Perl言語のオンライン文法チェッカー』(http://www.e777.co.jp/perlcw/) というサイトを見つけました。 このサイトでチェックしてみた所、tmp.pl syntax OK と表示されました。 サイト上の説明では、『「tmp.pl syntax OK」と表示された場合は文法的な問題は全くありません。』 と書かれています。 この表示を信頼してもでしょうか? 文法に問題がなければ、サーバー上で暴走する事はないと考えてよいのでしょうか? また、httpd上では表示できないのに、サーバー上では問題なく動く、またPerl言語のオンライン文法チェッカーでも、tmp.pl syntax OK と表示されるというのは、何に問題があると考えたらよいのでしょうか? 皆さん、アドバイス、ご指導のほどよろしくお願い致します。

    • ベストアンサー
    • CGI
  • 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
  • An HTTPdでPerlを動かす

    An HTTPdとPerlでCGIを動かそうと思います。 PerlをD:\usr\binに、An HTTPdをD:\Httpdにインストールしました。 ドキュメントルートをD:\html_publicに設定しました。D:\html_publicにindex.htmlを置き、IEでhttp://127.0.0.1/とするとindex.htmlが表示されました。 続いてhello.cgiをD:\html_publicに置き、http://127.0.0.1/hello.cgiとしました。すると「Internet Explorer ではこのページは表示できません」との表示がでました。 Perlが認識されないのであれば、hello.cgiのコードが表示されるものではないでしょうか。 あるいはAn HTTPdでは指定された拡張子以外は認識されないのかもしれないと思い直しても、一応CGIに関しては、 .pl,.cgi D:\usr\bin\perl.exe で定義しています。 設定のどこに間違いがあるのでしょう。

    • ベストアンサー
    • CGI