2009-09-14 13 views

cevap

15

:

  • $OSNAME
  • $^O

işletim sisteminin adı yüklenebileceğini altında h Perl'in bu kopyası, yapılandırma işlemi sırasında belirlendiği şekilde oluşturuldu. Değer $Config{'osname'} ile aynıdır. Ayrıca bkz. Yapılandırma ve perlrun içinde belgelenen -V komut satırı anahtarı.

Windows platformlarında $^O çok yararlı değildir: her zaman MSWin32 olduğundan, bu, 95/98/ME/NT/2000/XP/CE/.NET arasındaki farkı anlatmaz. Varyantları birbirinden ayırmak için Win32::GetOSName() veya Win32::GetOSVersion()'u (bkz. Win32 ve perlport) kullanın.

+0

Mükemmel! Teşekkürler! – knorv

+1

Cygwin'den ne haber? $^O = 'cygwin' – mob

+0

@mobrule - Cygwin kullanıyorsak fark eder mi? Bunu test etmek için bir Windows kutusu yok, ancak Cygwin'i kullanıyorsanız, temelde her iki kelimenin en iyi kısmını (çoğunlukla) elde edersiniz, bu yüzden gerçekten önemli olmamalıdır. Eğer Cygwin'in "$^O" yu nasıl etkilediğini bilmek istiyorsanız, Cyl'i Cygwin altında çalıştırmalı ve öğrenmelisiniz. –

6
$^O eq 'MSWin32' 

(Kaynak: perlvar manpage)

3

kullanın Devel::CheckOS. Sizin için tüm mantık ve özel durumları ele alır. Windows üzerinde ancak cmd istemi iseler, os_is() hala doğru cevabı verecektir böylece

use Devel::CheckOS qw(die_unsupported os_is); 

die "You need Windows to run this program!" unless os_is('MicrosoftWindows'); 

'MicrosoftWindows aileleri, örneğin Cygwin olarak şeyleri bilir: Ben genellikle bir şey gibi yapın.

-1

Bu çok hızlı ve kirli ve% 100 portatif, ancak bir tutamda hala yararlı olduğu bahis yapamaz. PATH, hem Windows hem de Unix'te yaygın olduğu için PATH Env değişkeninde ters eğik çizgi olup olmadığını kontrol edin. So - in Perl:

if ($ENV{PATH}=~m{\\}) { 
    #Quick and dirty: It's windows! 
    print "It's Windows!"; 
} else { 
    print "It's Unix!"; 
} 
+0

altında – tjd

İlgili konular