File::Pathでディレクトリを作る
自分には、ちょっと分かりにくかったのでメモ。
use v5.12; use warnings; use FindBin qw($Bin); use File::Path qw(make_path); # ディレクトリが生成可能なパス my $path1 = $Bin . '/foo/bar'; # 権限の問題で失敗するであろうパス my $path2 = '/hoge/fuga'; my $err; make_path( $path1, $path2, { verbose => 1, # 実行結果の出力 error => \$err # エラー情報の取得 }); # エラー情報は、 # ハッシュリファレンスの配列のリファレンスが入っている if ( @{$err} ) { foreach my $diag (@{$err}) { my ($file, $message) = %{$diag}; if ( $file eq '' ) { print "general error: $message\n"; } else { print "problem unlinking $file: $message\n"; } } }
実行結果
$ perl aaa.pl
mkdir /Users/(user name)/foo
mkdir /Users/(user name)/foo/bar
mkdir /hoge
mkdir /hoge/fuga
problem unlinking /hoge: Permission denied
problem unlinking /hoge/fuga: No such file or directory
エラーの有無は、デリファレンスした配列で判定する必要がある。
verbose
は出す必要はないけど、
エラー情報はdie
する前に出力したいところ。
おしまい。
Leave a Comment