[perlメモ]OSの判別方法

perlでプログラムを開発時に開発はWindows上ターゲットはlinuxやFreeBSDなどのUNIX系OSだったりすることはよくあることですが、Windows上でテストを行う場合、モジュールはプログラムで扱うファイルのパスが違うためそのままでは実行できないことがよくあります。

基本的にUNIX系のOSはパスを

/home/hogehoge/local/lib

という風に書きますが

Windows系のOSの場合

C:\home\hogehoge\local\lib

の様になるのでパスの書き方が根本的に異なっているわけです。

他にも方法はあるかと思いますが、こういう場合などとりあえずOSを判別してパスを別々に記述するなどして対処する場合などに便利なのがOSを判別する特殊変数です。

 

$^O

がその特殊変数です。

print "$^O\n";

と書いたプログラムをそれぞれのOSで実行すると下記のようになります。

Windows XPの場合「MSWin32
Linux系OSの場合「linux
FreeBSDの場合「freebsd

という風になりました。

そういうわけで後はこれを利用して処理を分岐すればOKです。

◇参考:【Perl 】初心者コーナーPart3

◇参考:Making The Road Wiki – Programming::Perl::特殊変数

タグ :