私はPerlを初めて使っていて、初めてJavaScriptを学習したばかりです。私は多分(JSのためのFirebugのように)Perlコードをチェックするバリデーターがあるのだろうかと思っています。誰もが信頼できるものを知っていれば大いに感謝します。私は何度もGoogle Googledを成功させました。新しい言語の学習を知っているので、間違いを確実にしています。前もって感謝します!。誰かがPerlのバリデーターを知っていますか
ちょうど構文がクリーンであるかどうかをチェックするために答えて
here is an online perl validator
、あなたはperl -c filename
を試みることができます。コードを形式的に整理するには、PerlTidyを見てください。 。 あなたはワイダーを必要としないかもしれません。あなたは何かを自分ですることができます。デフォルトでは
リダイレクトエラーメッセージ
、エラーメッセージがSTDERRに送信されます。ほとんどのHTTPDサーバーは、STDERRをサーバーのエラー・ログに指示します。一部のアプリケーションでは、サーバーのエラーログとは別のプライベートエラーログを保持したい場合や、エラーメッセージをSTDOUTに送信してブラウザがそれらを受け取るようにする場合があります。
この目的のためにcarpout()
機能が提供されています。 carpout()
はデフォルトではエクスポートされませんので、あなたが
use CGI::Carp qw(carpout);
carpoutを言って、それを明示的にインポートする必要があります()関数は、書き込みエラーのために開いているファイルハンドルへの参照を引数として必要です。これは、CGIアプリケーションの先頭にあるBEGINブロックで呼び出され、コンパイラーのエラーがキャッチされます。例:
BEGIN {
use CGI::Carp qw(carpout);
open(LOG, ">>/usr/local/cgi-logs/mycgi-log") or
die("Unable to open mycgi-log: $!\n");
carpout(LOG);
}
carpout()
は、この時点であなたのためのログにロックファイルを処理しません。また、carpout()
はメモリ内のファイルハンドルでは機能しませんが、パッチを適用しても問題はありません。
実際のSTDERRは閉じられません。CGI :: Carp :: SAVEERRに移動されます。いくつかのサーバーは、CGIスクリプトを扱うときに、スクリプトがSTDOUTとSTDERRを閉じるときにブラウザとの接続を終了します。 CGI :: Carp :: SAVEERRはこれが早すぎることを防ぐためのものです。
さまざまな方法でファイルハンドルをcarpout()に渡すことができます。 "正しい"方法は、ファイルハンドルGLOBへの参照を上回る可能性があります。
carpout(* LOG);
次の構文も同様に認められている:
carpout(LOG);
carpout(main::LOG);
carpout(main'LOG);
carpout(\LOG);
carpout(\'main::LOG');
... and so on
ファイルハンドルやその他のオブジェクトも同様に動作します。
use CGI::Carp qw(fatalsToBrowser);
die "Bad error here";
:PERLエラーをMAKING
はあなたは(告白、死ぬ)ブラウザにエラーが致命的な送信したい場合
、特別な「fatalsToBrowser」サブルーチンをインポートするために頼むブラウザウィンドウに表示されます
致命的なエラーは、ブラウザとログにエコーされるようになりました。 CGI :: Carpは、初期のコンパイル段階で発生したエラーさえも見られるように、ブラウザに最小限のHTTPヘッダーを送信するように手配します。致命的でないエラーはログファイルにのみ送られます(carpoutでリダイレクトされない限り)。
* fatalsToBrowserは、mod_perlのバージョン2.0以降で動作しないことに注意してください。*
デフォルトでは、デフォルトのメッセージ
を変更し、ソフトウェアのエラーメッセージがでウェブマスターに連絡するノートが続いています電子メールにエラーの日時を記入してください。このメッセージがお好みでない場合は、set_message()
ルーチンを使用して変更できます。これはデフォルトではインポートされません。
use CGI::Carp qw(fatalsToBrowser set_message);
set_message("It's not a bug, it's a feature!");
カスタムエラーメッセージを作成するには、コード参照を渡すこともできます。実行時に、スクリプトが終了する原因となったエラーメッセージのテキストを使用してコードが呼び出されます。例:
use CGI::Carp qw(fatalsToBrowser set_message);
BEGIN {
sub handle_errors {
my $msg = shift;
print "<h1>Oh gosh</h1>";
print "<p>Got an error: $msg</p>";
}
set_message(\&handle_errors);
}
perlは動的言語なので、検証することはできません。たとえば、実行時に作成される可能性があるため、コンパイル時に存在しないサブを呼び出すことができます。静的バリデーターがコールが正しいかどうかを知る方法はありません。
コードがコンパイルされているかどうか知りたいのであれば、perlインタープリタ自体を使用してください。
指定されたコーディング標準への準拠コードを確認する場合は、Perl::Criticを使用してください。
私はスクリプトで使い始めました。 use strict; 警告を使用します。 診断を使用します。詳細については、 をご参照ください。どうもありがとう。 –
この問題には多くの方法があります。 http://perldoc.perl.org/perldebug.htmlを読むと、デバッガの使い方を学ぶことができます。デバッガの使い方は、Firebugに似ています。しかし、自動的に問題を回避するには他にもたくさんの方法があります。あなたは厳しい 使用してコードを開始する場合の一般的なエラーの
多くのクラスが自動的にキャッチされています。 警告を使用します。
http://perltidy.sourceforge.net/あなたのコードを再フォーマットし、多くの一般的な間違いを簡単に見つけます。
- CPANモジュールPerl :: Criticは、コードの分析を自動化して特定のスタイルを決定します。一貫したスタイルは、エラーの追跡を容易にします。
- ユニットテストを使用します。 Test :: Moreというコアモジュールは簡単に始めることができます。
ありがとう、私はより多くの情報を入手します。 –
Perl自体はどうですか?
perl -c your_program.pl
プログラムの冒頭に以下を追加すると、多くの頭痛を避けることができます。
use strict;
use warnings;
use diagnostics;
最後に、Perl::Criticがあります。
私は良いPerlの本を読むことが必要だと思います。 http://learn.perl.org/books.html –
+1 Perl:批評 – eckes
http://www.perlcritic.org/ –
- 1. 誰かがタブバーの良いチュートリアルを知っていますか?
- 2. フレックス:誰かが良いHTMLエディタを知っていますか?
- 3. 誰かが良いRuby ePubライブラリを知っていますか?
- 4. 誰かが良いT3(weblogic)ソースを知っていますか?
- 5. 誰かがオープンソースのTwitterを知っていますか?
- 6. 誰かが「テーマシート」のCSSを知っていますか?
- 7. 誰かがWebベースのIDEを知っていますか?
- 8. 誰かがオープンソースのJSONスキーマメタデータリポジトリを知っていますか?
- 9. 誰かが "Traceroute For Linux"のリポジトリを知っていますか?
- 10. 誰かがRESTベースのCSSマイナーを知っていますか?
- 11. 誰かがVS 2015のAccurevプラグインを知っていますか?
- 12. 誰かがケファを知っていますか?
- 13. 誰かがjava2dテキストライブラリを知っていますか?
- 14. 誰かが簡単なJava IDEを知っていますか?
- 15. 誰かがgvfsd-httpを知っていますか?
- 16. 誰かがCSS分析ツールを知っていますか?
- 17. 誰かがios graphvizビューアライブラリを知っていますか?
- 18. もう誰かがショートハンドアクションスクリプト3を知っていますか?
- 19. 誰もが良いPowerPcリファレンステキストを知っていますか?
- 20. 誰もがAJAXフォームのチュートリアルを知っていますか
- 21. 誰もがウェブサイト用のQaツールを知っていますか?
- 22. ionic2キーボードクラスの使用法は誰が知っていますか?
- 23. 誰でもkCCDirectorProjection2Dが何をしているのか知っていますか?
- 24. 誰かが働いているOCR(PHP)を知っていますか?
- 25. 誰もParse.comのドキュメントに何があったのか知っていますか?
- 26. アドバタイプが何を意味するのか誰もが知っていますか?
- 27. 誰かが.Netのための良いオープンソースウィキを知っていますか?
- 28. 誰かがiOSデバイスの「終了プロセス」について知っていますか?
- 29. 誰かがTimeline Appアイコンの新しい次元を知っていますか?
- 30. 誰かが "perlfiddle"というサービスについて知っていますか?
私はそれを試みましたが、私はWindows Vistaを使用しています。だから、私はインタプリタに対してファイルを実行するとき、私は.. c:\ programs \ thefile.plを書かなければなりません。他のコマンドは機能しません。どうもありがとう。私はPerlの整頓を見ていきます。 –
Vistaでは違うはずがありません。そのperl binディレクトリがPATHにあることを確認してください。 WindowsでPerlに問題がある場合は、http://win32.perl.orgとメーリングリストでFAQを使用できます。 –
私の編集した答えを見てください。 – ayush