Hi: I'm somewhat new to Perl and am trying to create a DBM with 500k+ records. Unfortunately, MacPerl eventually gives an Out of Memory error and shortly thereafter crashes the Mac, sometimes bringing up Macsbug, othertimes just freezing the entire system.
So, 1) what am I doing wrong in the code below that is causing the error? I thought once a hash was tied to a file, it would not need to allocate memory to the hash. And 2), what can I do to stop the program when it gets the memory error but before it crashes? Thanks! Joe sub DoCust { { my $fname = 'unld03e'; open (INP, $fname) or die "File <$fname> not found. $!"; #open (ERR, ">cbss-cust-$fname.err"); } use vars '%CAN_CUST'; #key = CAN, value = Customer Name use Fcntl; use NDBM_File; tie %CAN_CUST, "NDBM_File", 'can_cust', O_RDWR|O_CREAT|O_EXCL, 0644; %CAN_CUST = (); # clear existing hash/file #CLEAR (%CAN_CUST); # doesn't seem to work my $reccnt = 0; while (<INP>) { chomp; $reccnt++; $_ =~ s/\0/ /g; # convert nulls to blank ($A field) my $cust_acct_no = substr($_, 0, 10); my $customer_name = substr($_, 11, 28); $customer_name =~ s/\s+$//; $CAN_CUST{$cust_acct_no} = $customer_name; } #end while close (INP); print scalar %CAN_CUST; untie %CAN_CUST; print "CBSS: Customer Name count: $reccnt\n"; return 1; } #end sub Joe M. Oglesby [EMAIL PROTECTED] http://jmo.OglesbyFamily.net FAX: 425/740-9343 pager: 877/946-2253