in reply to Memory issue while opening and reading a file

As others have said, jamming 3G of data into 1G of ram is going to be problematic ... especially since you're doubling your amount of memory by reading the file into memory first. I would recommend:

  1. processing the file line by line
    open( my $fh, "<", $sigDataFile ) || die( "cannot open file - $!" ); while( <$fh> ) { chomp; my( $key, $value ) = split(/=/, $_); # does = need to be escaped? ... }
  2. use something like SDBM_File or GDBM_File
    use Fcntl; use SDBM_File; tie( %hash, 'SDBM_File', 'temp_file_name', O_RDWR|O_CREAT, 0666 ) or die "Couldn't tie SDBM file 'filename': $!; aborting"; open( my $fh, "<", $sigDataFile ) || die( "cannot open file - $!" ); while( <$fh> ) { chomp; my( $key, $value ) = split( /=/, $_ ); $hash{$key} = $value; ... }

-derby