Path::Class でfile/directory操作
OSに依存しないパスを作成できる。あとpathの結合とか。(File::Specみたいに)
その他ファイルの読み込みなども可能。ディレクトリ以下のfilename表示もopendir使うよりわかりやすい。
例えば、ディレクトリ下のファイル一覧を取得する場合は$dir->childrenとか。これは".", ".."を含まないのでそのまま使える。
use Path::Class qw(dir file); my $dir = dir('foo', 'bar'); # linux => foo/bar my $abs = dir('foo', 'bar')->absolute; # foo/barへの絶対パス my $rel = $abs->relative; # 相対パスへの変換 my $rel = $abs->relative('/foo'); # /fooへの相対パス
あと、print $dirとすると文字列に展開されて表示されるけど、実態はPath::Class::Dir(Path::Class::Fileも同じ)のオブジェクトなのでMooseで型チェックしてる場合や、本当に文字列そのものが欲しい場合などは変換しないといけない。
has directory => ( is => 'rw', isa => 'Str', default => $dir->stringify, );