末尾に " at File.pm line 123" が含まれる Perl 文字列例外を、どこかに出力して処理したい場合があります。ただし、パス名や行番号などで最後のビットを公開したくはありません。
時間の経過とともに、いくつかの可能な解決策を思いつきましたが、どれもあまり気に入りませんでした。このような正規表現を使用するだけでも明らかです。
s/\s+ at \s+ .*$//xms;
しかし、「 at 」という単語が含まれているものは何でも殺してしまうという問題があります。行番号をオプションでなくすると役立ちますが、「 at ANON 」または同様にグロテスクな何かが残る匿名コードになってしまいます。
私もこのようなことを試しました:
$_ = reverse $_;
s/^.*? \s+ ta \s+//xms;
$_ = reverse $_;
これは、1 行のエラーに対して非常にうまく機能します。confess
ただし、または他の例外スローワーからの完全なスタック トレースが発生した場合は、長いスタック トレースが配置されたままになります。
誰かが共有したい良い解決策を持っていますか? またはより良い方法に関する提案はありますか?(「そのようなダイメッセージを出力しないでください」は受け入れられる答えではありません。)
ここで見落としていた CPAN モジュールがある場合は、知りたいです。そうでない場合は、この目的のために CPAN モジュールを提供することを考えています。