0

ログエラーを取得するための次のメソッドを作成しました。$_ を使用して「エラーの種類」を取得します。

sub _log_warning {
    my $log = Log::Server->new(
        base_dir =>
          &config->current->{'log_reader'}->{'base_dir'},
        pattern => &config->current->{'log_reader'}->{'pattern'},
    );
    $log->infof("Could not register to DB. Got $_");
}

$_ が生成されたエラーの種類を取得するために使用されているのを見たからです。私はこれをこのコンテキストで使用しました:

 use Try::Tiny;
 try { _log_to_database(); }
 catch {
     _log_warning();
 };

これは構文的にOKですか?私は _log_warning(); を期待しています。エラーのログを作成し、 $_ は発生したエラーの種類を示す必要があります。しかし、多分私は $_ をうまく使っていませんか?

アップデート:

メソッドをアクティブにするためにエラーを生成しようとすると、次のようになりました。

 2013-07-04T11:15:56 [INFO] Could not register to DB. Got ã<81><9d>ã<81>®ã<82><88>ã<81>     <86>ã<81>ªã<83><95>ã<82>¡ã<82>¤ã<83>«ã<82><84>ã<83><87>ã<82>£ã<83>¬ã<82>¯ã<83><88>ã<83>>> ªã<81>¯ã<81><82>ã<82><8a>ã<81>¾ã<81><9b>ã<82><93>: /var/log/app.error.log.%Y%m%d at script.pl line 36.\n at script.pl line 113

:(

@池上SOS

4

1 に答える 1

1

したがって、Try::Tinyドキュメントによると:

catch ブロック内では、キャッチされたエラーは $_ に格納されますが、以前の $@ の値は引き続き使用できます。

したがって、このモジュール$_はキャッチされたエラーに設定されるため、使用法は正しいように見えます。これは、デザインの背後にあるロジックに関する興味深いブログ投稿です。

于 2013-07-04T02:07:45.337 に答える