如何判断我的Perl脚本是否在Windows下运行?

时间:2009-09-14 21:01:16

标签: windows perl

以编程方式确定Perl脚本是否在基于Windows的系统(Win9x,Win XP,Vista,Win7等)上执行的最佳方法是什么?

在这里填空:

my $running_under_windows = ... ? 1 : 0;

4 个答案:

答案 0 :(得分:15)

来自perldoc perlvar

  
      
  • $OSNAME
  •   
  • $^O
  •   
     

在构建过程中确定的构建此Perl副本的操作系统的名称。该值与$Config{'osname'}相同。另请参阅perlrun中记录的Config和-V命令行开关。

     

在Windows平台中,$^O不是很有帮助:因为它总是MSWin32,所以它不能区分95/98 / ME / NT / 2000 / XP / CE /。净。使用Win32::GetOSName()Win32::GetOSVersion()(请参阅Win32perlport)来区分变体。

答案 1 :(得分:6)

$^O eq 'MSWin32'

(来源:perlvar联机帮助页)

答案 2 :(得分:3)

使用Devel::CheckOS。它为您处理所有逻辑和特殊情况。我经常这样做:

use Devel::CheckOS qw(die_unsupported os_is);

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

'MicrosoftWindows'家族了解Cygwin之类的内容,因此如果您使用的是Windows而不是cmd提示符,os_is()仍会给您正确答案。

答案 3 :(得分:-1)

这是非常快速和肮脏的,并且不会认为它100%便携,但仍然有用。 检查PATH Env变量中是否存在反斜杠,因为PATH对于Windows和Unix都是通用的。 所以 - 在Perl:

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