2010-04-19

[perl] File::Path::mkpath() に複数のパスを与える

File::Path の mkpath で、複数のディレクトリパスを一気に作ってもらおうとすると困りそうなことについてです。make_path と mkpath はディレクトリパスが複数の場合の扱いに違いがあります。

make_path($dir1, $dir2, $dir3);      # OK
make_path($dir1, $dir2, $dir3, {});  # OK
mkpath($dir1, $dir2, $dir3);         # NG 【なんと!】
mkpath($dir1, $dir2, $dir3, {});     # OK
mkpath([$dir1, $dir2, $dir3]);       # OK

そもそも、複数のパスを指定することを止めれば安心して使えます。

mkpath($_) for ($dir1, $dir2, $dir3);