PerlスクリプトがWindowsベースのシステム(Win9x、WinXP、Vista、Win7など)で実行されているかどうかをプログラムで判断する最善の方法は何ですか?PerlスクリプトがWindows上で実行されているかどうかを確認するにはどうすればよいですか?
ここで空白を埋める:perldoc perlvar
から
my $running_under_windows = ... ? 1 : 0;
PerlスクリプトがWindowsベースのシステム(Win9x、WinXP、Vista、Win7など)で実行されているかどうかをプログラムで判断する最善の方法は何ですか?PerlスクリプトがWindows上で実行されているかどうかを確認するにはどうすればよいですか?
ここで空白を埋める:perldoc perlvar
から
my $running_under_windows = ... ? 1 : 0;
$^O eq 'MSWin32'
(出典:perlvar
manページ)
使用Devel::CheckOS。それはあなたのためのすべてのロジックと特殊なケースを処理します。私は通常のようなものです:
use Devel::CheckOS qw(die_unsupported os_is);
die "You need Windows to run this program!" unless os_is('MicrosoftWindows');
は「MicrosoftWindowsの家族は、Cygwinのようなものを知っているので、あなたは、CMDプロンプトでWindowsの上にあるではない場合、os_is()
はまだあなたに正しい答えを与えるだろう。
これは非常に速く汚れていて、100%携帯可能だとは思っていませんが、ピンチでも便利です。 PATHがWindowsとUnixの両方に共通であるため、PATH Env変数にバックスラッシュが存在するかどうかを確認します。 so-in Perl:
if ($ENV{PATH}=~m{\\}) {
#Quick and dirty: It's windows!
print "It's Windows!";
} else {
print "It's Unix!";
}
もちろん、あなたはcygwinにいます。それであなたのコードは、それがunixを実行していると誤って考えています。 – tjd
優秀!ありがとう! – knorv
Cygwinについてはどうですか? $^O = 'cygwin' – mob
@mobrule - Cygwinを使用している場合は重要ですか?私はそれをテストするためのWindowsボックスを持っていませんが、Cygwinを使用している場合は、基本的に両方の単語(ほとんどの部分)の最高を得るので、本当に問題ではありません。 Cygwinが '$^O'に与える影響を知りたければ、Cygwinの下でPerlを実行して調べるべきです。 –