2013-04-24 59 views
0

我在Windows上创建一个小的perl脚本。 我想确定Windows的版本,即XP,Vista,7,8等。 我如何获取此信息? 谢谢。使用perl确定Microsoft Windows的版本?

更新:我想知道运行脚本的Windows版本! 请加入一些关于如何使用API​​的代码,因为我是初学者&对perl不太了解。

+0

检查[this](http://stackoverflow.com/questions/334686/how-can-i-detect-the-operating-system-in-perl)一出。 – 2013-04-24 10:34:33

+0

没有正确答案的选项给出所需的信息! – 2013-04-24 10:37:51

回答

4

尝试Win32

#!/usr/bin/env perl 

use 5.014; 
use strict; 
use warnings; 

use Win32; 

say Win32::GetOSDisplayName(); 
say for Win32::GetOSName(); 
say for Win32::GetOSVersion(); 

如果这还不够,你可以通过拨打Win32::APIGetVersionEx

+0

谢谢@Sinan,满足我的需求。 – 2013-04-25 06:25:31

+0

对于版本> 6.2不起作用! GetVersionEx已弃用,win32模块也使用此Windows API。 :-( – 2016-12-14 13:36:49

2

http://perldoc.perl.org/perlvar.html

$^o

操作系统下其中的Perl这个副本是 建,在配置过程中所确定的名称。例如 请参见perlport中的PLATFORMS。

该值与$ Config {'osname'} 相同。另请参阅配置和在 perlrun中记录的-V命令行开关。

在Windows平台中,$^O并不是很有帮助:因为它始终是MSWin32,所以它不会告诉我们在95/98/ME/NT/2000/XP/CE/.NET之间的区别。使用Win32 :: GetOSName()或 Win32 :: GetOSVersion()(请参阅Win32和perlport)区分 的变体。

+0

我不是问在哪个平台上建perl! 我在问它运行的机器。 – 2013-04-24 10:20:19

+0

这就是所谈论的。变量'$^O'包含这些信息。但是对于大多数Windows版本,它总是会返回“MSWin32”。因此,对于Windows,您将需要使用上述功能。这与建筑perl – Salgar 2013-04-24 10:38:52

+0

无关你能告诉我如何使用这些功能吗? 我得到一些错误“未定义的子程序和Win32 :: GetOSName调用” – 2013-04-24 10:41:18