Path::Extended 0.12
file_or_dir()とdir_or_file()というヘルパーを用意しました。使い方はこんな感じ。
use strict; use warnings; use Path::Extended; my $maybe_file = file_or_dir('path/to/something'); if ($maybe_file->is_dir) { warn "this is not a file!"; } else { print $maybe_file->slurp; }
従来は同じことをする場合、
use strict; use warnings; use Path::Extended; my $file = file('path/to/something'); if (-d $file->absolute) { warn "this is not a file!"; } else { print $file->slurp; }
のような書き方をしていたのですが(最低限のパスまわりはPath::Extended::Entityという共通のベースクラスが処理しているので、file()にディレクトリを食わせたり、dir()にファイルを食わせたりしても(このレベルであれば)問題は起きません)、まあ、あまり直感的ではないよね、ということで。file_or_dir()とdir_or_file()の違いは、ファイル/ディレクトリが存在しなかった場合にどちらのオブジェクトを返すかです(file_or_dir()は::File、dir_or_file()は::Dirのオブジェクトを返します)。