問題タブ [autodie]

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.

0 投票する
4 に答える
905 参照

perl - Perl モジュールの autodie と Fatal の違いは何ですか?

Perl モジュールの autodieFatalは、似たようなことをしているようです。どちらかを優先して使用する理由は何ですか?

0 投票する
4 に答える
3081 参照

perl - 自動ダイに不利な点はありますか?

StackOverflowの人々がautodieの使用を宣伝しているのを時々目にします。しかし、ここやネットの他の場所のコードでは、autodieはあまり見られません。いくつかの欠点はありますか?自動ダイを使用すると何かが失われますか?(オートダイを使用すると、甘やかされてしまうという考えがあります)

0 投票する
1 に答える
310 参照

perl - autodie-pragma はエンコーディングに影響を与えますか?

「オートダイ」の後に別の出力を取得するのはなぜですか?

0 投票する
3 に答える
602 参照

perl - autodie を非ビルトインで使用するには?

autodie のドキュメントには、デフォルトで処理できる組み込み関数以外の関数に使用できることが示唆されていますが、それを行う方法の明確な例はありません。

具体的には、Imager モジュールに使用したいと考えています。or die Imager|$image->errstr;その多くの関数とメソッドは失敗する可能性があり、それが私のコードがいたるところにフレーズで散らばることを意味しないことを望んでいます.

もちろん、autodie を使用してそれを達成する以外の方法があれば、それにも興味があります。

0 投票する
2 に答える
313 参照

perl - オートディーのように死ぬ

私はautodieビルトインからの例外を処理するために使用します。残念ながら、そのスコープはレキシカルで autodieあり、メソッドでは機能しません。クラスメソッドから例外をスローして、オートダイ例外と同じ方法で処理することはできますか? 要するに、クラスのユーザーに 2 つの方法で例外を処理させたくありません。1 つは autodie がビルトインに提供する豊富な例外クラスで、もう 1 つはdie if ...コードがスローする単純な " " です。

それが役立つ場合、私はMoose自分のクラスを構築するために使用します

0 投票する
1 に答える
191 参照

perl - IO::File から例外を取得していますか?

IO::File、IO::Socket::INET モジュールには、perl の組み込み IO 関数を直接使用するよりもいくつかの利点があります。たとえば、ハンドルをフラッシュするための明示的な構文があります。

ただし、組み込みの IO 関数よりもいくつかの欠点があるようです。たとえば、autodie モジュールと組み合わせて失敗時に例外を発生させることはできないため、組み込み関数を使用した場合よりも、失敗を処理するために全体的に多くのボイラープレート コードを作成する必要があることに気付きました。

2 つを結合する方法、または結合された機能を持つ他のモジュールを結合する方法はありますか? File::Slurp などの一部の目的が限定された IO モジュールでは、より柔軟なエラー処理が可能であることに気付きました。

私はモジュール コードを書いていますが、理想的には、ソリューションは perl 5.10.0 までずっと機能するはずです。

0 投票する
1 に答える
363 参照

perl - PERL Net::SFTP::Foreign autodie=>0 の次に 1

いくつかの sftp サーバーで 1 日に 1 回、いくつかのファイルを自動的に取得するスクリプトを作成しています。問題は、この sftp サーバーの信頼性が低く、クライアントがセッションを開くまでに数回再試行する必要がある場合があることです。私はさまざまな理由で Net::SFTP::Foreign を選択します (特に、システムからネイティブの ssh コマンドを使用するため)。

あきらめる前に、最初の sftp セッションを 3 回再試行するためにループを作成しました。

私の問題: autodie=1 を維持したいのは、コードの後半で使用されるすべてのメソッドの回復不能なエラーを自動的に処理するためです。しかし、autodie=1 は、セッションの開始 (Net::SFTP::Foreign->new) 中のエラーをトラップできないため、再試行部分は役に立ちません。

これが私が書いたコードの一部です。再試行部分を機能させるために autodie は 0 に設定されています (ただし、autodie=1 が必要です)。再試行部分が実際に機能するように autodie=>0 で sftp 接続を開き、この値を autodie=>1 で変更して、回復不可能なエラーを自動処理することは可能ですか?

どんな助けでも大歓迎です:)

0 投票する
2 に答える
999 参照

perl - Perl : 「main::IN」という名前は一度しか使用されていませんが、実際には使用されています

ファイルを読み込む短い perl スクリプトを書いています。参照tmp.txt:

私のperlプログラムconvert.plは次のとおりです。

以下を出力します。

を使っていたので、警告INがわかりません。Name "main::IN" used...なぜそれは不平を言っているのですか?