A 32-bit OS should be able to handle all 4GB.
That's not so. 32-bit windows only make 2GB of virtual memory available to each process; the other 2GB is reserved for use by the OS.
That can be extended to 3GB using a startup switch, but then executables need to be re-built with a link time option to make use of it.
"Out of memory" error. Checking the Windows Task Manager I see that Perl is only using around 1GB.
It sounds like the program is trying to extend a hash that currently has consuming at or close to 1GB of data; When perl needs to extend a hash, it doubles the size of the base element; that may well be pushing you over the 2GB limit; hence you run out of memory.
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.