LoginSignup
0
0

More than 5 years have passed since last update.

Perlでmkpathをするときの恐怖

Last updated at Posted at 2017-02-07

Perlで階層を一気にパーミッションを指定してmkdirするとき、インターネットではFile::Pathを使って以下のような書き方を見かける。
mkpath( "/hoge/moge/hoge", 0, 0775);
しかし、この書き方は誤動作することがある。

インターネットでドキュメントを確認してみますと、以下の4つの書き方がある。

mkpath( $dir )
mkpath( $dir, $verbose, $mode )
mkpath( [$dir1, $dir2,...], $verbose, $mode )
mkpath( $dir1, $dir2,..., \%opt )

この4つの書き方で、2番目と4番目が非常に似ているので、2番目で書いたつもりが、4番目で動作することが有り得る、verboseのつもりで書いていても、それをdir2と認識しゴミディレクトリーを作成してしまう恐れがある。
実行したディレレクトリーに「0」という謎のディレクトリーが作られていたら、間違い無く、解釈ミスが起きている。
回避方法は、以下のように、最初から4番目の書き方で記載するのが良い。

mkpath( "/hoge/moge/hoge", {chmod => 0775});

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0