2013-12-19 14 views
7

IO :: File、IO :: Socket :: INETモジュールには、ハンドルをフラッシュする明示的な構文を持つなど、perlの組み込みIO関数を直接使うよりもいくつかの利点があります。IO :: Fileから例外を取得していますか?

しかし、組み込みのIO機能にはいくつかの欠点があるようです。たとえば、私が知る限り、失敗時に例外を発生させるためにオートディーモジュールと組み合わせることはできませんので、組み込み関数よりも障害を処理するためのコードを全体的に書く必要があります。

2つの機能を組み合わせる方法はありますか?私はFile :: Slurpのような限られた目的のIOモジュールに気付きました。より柔軟なエラー処理が可能です。

私はモジュールコードを書いています。理想的には、解決策はperl 5.10.0に戻って動作するべきです。

+8

ファイルハンドルが/とにかく 'IO :: File'オブジェクトが含まれていることに注意してください(与えられました十分に現代的なperl、そして多分 'IO :: Fileを使ってメソッドをロードする ') - OOP機能をあきらめずに' open'のような組み込み関数を使うことができます。 – amon

答えて

2

Path :: Tinyを見ましたか?構文は異なりますが、例外がスローされます。

E.G.

use Path::Tiny; 
path('/non/existent/file')->openr; 

はパスで死んでしまう::タイニー:: Exceptionオブジェクト(あなたがそのようなファイルを持っていないと仮定した場合)

関連する問題