pwdには気をつけろ!
最近はLinux上でPerlスクリプトを書く機会が多く、今までのWindows上と違って、気が付くとPerlスクリプトの中身がUnixコマンドのオンパレードになっていたりします。
カレントディレクトリを求める時、Windows上では、ちゃんと『use Cwd;』モジュールを使って『$cwd = getcwd();』をしたけど、なぜかLinux上では『$pwd = `pwd`;』とかしてしまう。
実はコレ、同等でないのです。
『$cwd = getcwd();』は本当にカレントディレクトリのみを取得できるのですが、『$pwd = `pwd`;』だとカレントディレクトリの最後に改行コードが付加されるです。
なので、ロジックの中でカレントディレクトリを比較するところが、絶対にマッチしなくなるのです。
だから、素直に『use Cwd;』モジュールを使うか、chompで改行コードをチョンプする。
use strict; use warnings; my $pwd = `pwd`; chomp $pwd; print '-->' . $pwd . "<-----\n"; use Cwd; my $cwd = getcwd(); print '-->' . $cwd . "<-----\n";