in reply to Source of warning message: "Use of uninitialized value in subroutine entry"

Update: Oops, this isn't the message you're talking about. Disregard. Try searching for no more than "subroutine entry". I think this error message is assembled.

Win32::API::Struct expects certain variables to be initialized where it doesn't really matter. Specifically, you must call ->align('auto') on a Win32::API::Struct instance after creating it. Also, you need to initialize all the fields of the struct. If you don't, passing this structure to an API function will cause numerous warnings by Win32::API::Struct::getPack as it tries to create a C version of the structure.

An example from my replies to 391557:

Win32::API::Struct->typedef(MEMORYSTATUS => qw{ DWORD dwLength; DWORD MemLoad; DWORD TotalPhys; DWORD AvailPhys; DWORD TotalPage; DWORD AvailPage; DWORD TotalVirtual; DWORD AvailVirtual; }); my $MEMORYSTATUS = Win32::API::Struct->new('MEMORYSTATUS'); # Avoid warning at Struct.pm line 214 $MEMORYSTATUS->align('auto'); # Avoid all other warnings in Struct.pm $MEMORYSTATUS->{'dwLength' } = 0; $MEMORYSTATUS->{'MemLoad' } = 0; $MEMORYSTATUS->{'TotalPhys' } = 0; $MEMORYSTATUS->{'AvailPhys' } = 0; $MEMORYSTATUS->{'TotalPage' } = 0; $MEMORYSTATUS->{'AvailPage' } = 0; $MEMORYSTATUS->{'TotalVirtual'} = 0; $MEMORYSTATUS->{'AvailVirtual'} = 0;