2013-04-24 76 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