問題タブ [carp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Perl で warn の代わりに Carp を使用する必要があるのはなぜですか?
人々は警告の代わりにコイの例を私に与え続けます。なんで?コイが警告より優れている理由は何ですか?
perl - Perl アプリケーションですべての「die」を「confess」に置き換えるにはどうすればよいですか?
私は大規模な Perl アプリケーションで作業しており、'die' が呼び出されるたびにスタック トレースを取得したいと考えています。私はCarp モジュールを認識していますが、「die」のすべてのインスタンスを「confess」で検索/置換したくないと考えています。さらに、Perl モジュールまたは Perl インタープリター自体のエラーの完全なスタック トレースが必要ですが、Carp を使用するようにそれらを変更することはできません。
それで、「自白」のように動作するように、実行時に「死ぬ」関数を変更する方法はありますか? または、「ダイ」から完全なスタック トレースをスローする Perl インタープリター設定はありますか?
php - 鯉を使った検索/交換
私はcarpfree3.6.4を使用して、いくつかのワードプレスrssフィードからのコンテンツをWebページに表示しますが、常にエンコードエラーがあります(ブログユーザーがカーリークォートを使用するたびにダイヤモンドの質問(U + DDDF)が表示され、すべての疑問符の後にスペースが続きます)。str_replace('U + DDDF'、''、$ carpoutput)を実行できるように、出力を探してcarp.phpにアクセスしましたが、これを実行すると、何も変更できません。ほとんどの場合、ダイヤモンドは私がそこに欲しいものを置き換えるものですが、完全に無関係なので、それらを''に置き換えるだけでよいと思いました。
彼らのドキュメントは私が理解するのが本当に難しいです、それを使用した経験のある人はこれを達成する方法を知っていますか?前もって感謝します。
perl - Carp::carp は Perl で何をしますか?
carp
サンプル Perl コードを使用してサブルーチンについて説明してもらえますか?
perl - Perlで特定のコイをクロークに変更するにはどうすればよいですか?
私は鯉を捕まえようとしました-警告:
eval {}を使用しましたが、機能しませんでした。eval
ドキュメントを調べたところ、eval
構文エラー、実行時エラー、または実行されたダイステートメントのみが検出されることがわかりました。
どうすれば鯉の警告をキャッチできますか?
perl - -MCarp=verbose を受け入れると証明されないのはなぜですか?
このテスト スクリプトを実行しました。
コマンドラインを使用するprove -MCarp=verbose -v foo.pl
と、次のエラーが発生しました。
を使用して実行してperl -MCarp=verbose foo.pl
も問題ありません。prove
詳細なCarpを拒否する原因は何ですか? croak
にグローバルに置き換えcroak
られていない場合、テストから完全なコールスタックを取得するにはどうすればよいconfess
ですか?
perl - Carp / Croak、Cluck / Confess、およびverboseオプションの違いは何ですか?
私は一般的に自分でロールしたので、Carpをあまり使用していません。ただし、コアモジュールを維持するという精神で、現在はそれを使用しています。ただし、warn/dieよりもかろうじて優れているようです。
さらに、cluck / confess / verboseは何をしますか?この短いスクリプトを実行して、出力が次のようになっていることを確認しました(Carpドキュメントでは実行されないため)。(ランダムな文字列を除いて)どの実行でもまったく同じように見えます。
更新:スクリプトをパッケージ名で更新しましたが、違いがあります。ただし、Carpはログ情報に関してはまだ非常に基本的であるように思われ、Web出力をサポートしていません。CGI :: Carp、Log :: Output、Log::Log4Perlのような他のものを見てみようと思います。
perl - MooseBUILDメソッドからの鳴き声
BUILD
メソッドが失敗した場合にクラスを爆破させたい。ただし、croak
エラーの処理に使用する場合、エラーはClass/MOP/Method.pm
呼び出し元のコードではなく、から報告されます。(つまり、オブジェクトをインスタンス化する呼び出し元です。)IOWcroak
は、呼び出しツリーを十分に吠えていません。
見よ:
Test
結果をインスタンス化すると、次のようになります。
Carp.pm
避けるべきパッケージを知るために呼び出されるパッケージ変数に注意を払うことになって@CARP_NOT
いますが、リストの1つの項目にしか注意を払っていないようです。たとえば、これを自分のTest.pm
:に追加すると
その結果は次のとおりです。
だから私はそれを配列にも追加する必要がありますよね?
その後、結果はまだです:
Moose::Object
影響を受けていないようです。
私はしばらくの間これに頭をぶつけてきました、そしてそれを台無しにしているものを理解することができないようです。
ありがとう。
perl - PerlCarpモジュールの無限ループ
例外をキャッチし、メッセージをログに記録してから、スタックトレースを取得するために呼び出すコードがいくつかありますCarp::longmess
。
したがって、私たちが行っていることの簡略化されたビューは次のとおりです。
logwrite関数は基本的に次のとおりです。
しかし、私が見ているログには次のようなものがあります。
そして、モジュールからの警告のシーケンスはCarp/Heavy.pm
、何度も何度も何度も繰り返され、logifleを吹き飛ばします。だから私たちは最終的にそれを殺します。これらの警告は、への呼び出しによってトリガーされているように見えますCarp::longmess
。ここで他に興味深いのは、$@
変数がちょうどのように見えることat
です。これはat
dieによって追加されたものですが、実際のエラーメッセージや行番号はありません。
誰かがこれを以前に見たことがありますか、またはCarp
パッケージで何が起こっているのか考えていますか?これはまれですが、過去1か月ほどで数回発生しており、毎日何百ものこれらのジョブが実行されています。