-1

File::Slurp read_file関数と関数を使用しwrite_fileてファイルの内容を更新しています。

今、私はそれにエラー処理を追加することに焦点を当てています。そのために、実際には存在しないファイルに対して次のメソッドを実行してみました。

1)read_file($file) or die("file read failed\n");機能していません。Status: 500 ソフトウェア エラーをスローするだけです。

2)try{ my @lines = read_file($file); } catch{ print "file cannot read";};動作していません。

3) と同じように err_mode http://search.cpan.org/~drolsky/File-Slurp-9999.13/lib/File/Slurp.pm#err_mode。動作していません。

Perl を使うのは悪い考えFile::Slurpですか?

4

1 に答える 1

0

このモジュールのドキュメントは古くなっているようで、動作と一致しません (編集: CPAN で修正されていますが、Fedora に付属するバージョンにはまだ矛盾があります)。に記載されているように、err_modeエラー時のデフォルトの動作は を呼び出すことであり、 について述べたようcroak()に戻ることはありません。そうです、return-undef 動作を取得するために使用するか、try/catch ブロックを使用する必要があります。あなたが言ったように、どちらもうまくいきませんでしたが、正確には何が起こりますか? これらは両方とも私にとってはうまくいきます:undefread_file()err_mode => 'quiet'

$ perl -MFile::Slurp -MTry::Tiny -e'try { $s=read_file("foo") } catch { die "bummer" };' bummer at -e line 1.

$ perl -MFile::Slurp -e'$s=read_file("foo", err_mode => "quiet") or die "bummer";' bummer at -e line 1.

于 2015-10-22T04:57:43.243 に答える