Эта информация может быть получена из WMI или с использованием SNMP, если вы решите включить SNMP на устройстве, на котором он будет работать. Для WMI у меня нет примера Perl, но пример VBScript см. Ниже.
Ссылка: http://www.microsoft.com/technet/scriptcenter/guide/sas_wmi_dieu.mspx
strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer)
Set colSWbemObjectSet = _
objSWbemServices.InstancesOf("Win32_LogicalMemoryConfiguration")
For Each objSWbemObject In colSWbemObjectSet
Wscript.Echo "Total Physical Memory (kb): " & _
objSWbemObject.TotalPhysicalMemory
Next
Проверено на моей системе XP, и она получает желаемые результаты (только 1,5 ГБ ОЗУ здесь, извините). Я вполне уверен, что есть интерфейсы WMI для Perl, если вы хотите придерживаться Perl. Если опция SNMP является опцией, общий объем физической памяти также можно получить из SNMP, используя одну из библиотек Perl SNMP.
РЕДАКТИРОВАТЬ : Только что заметил @Mr. Комментарий Маскрата относительно Microsoft KB http://support.microsoft.com/kb/274558 - очевидно, что поведение, которое вы видите с Perl, является ограничением вызова Win32 API, поэтому вы можете получить те же результаты с WMI. К сожалению, у меня нет 2-4 ГБ ОЗУ, чтобы проверить это.