小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

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";