Despite comments to the contrary above, available RAM is not a factor in how much stuff you can read into "memory". Virtual memory means that the physical RAM available is a performance limiting factor rather than an absolute limit. However, there are absolute limits and, depending on OS and build of Perl, 4 GB is likely to be beyond the maximum chunk of (virtual) memory you can use.
The answer, as suggested elsewhere, is to restructure your code so that the analysis sub uses either a file handle and reads the data directly, or uses a database, or use something like Tie::File to avoid loading all of the file into "memory".
Perl is environmentally friendly - it saves trees