Ok perlers, It was actually fairly easy. I added a delete just before the end of the for loop. delete $oBook->{Worksheet};
Not sure how the references work internally in Perl. I guess that when oBook is assigned a new Spreadsheet the previous Spreadsheet is not getting cleaned up. Cheers, On 4/27/05, Craig Moynes <[EMAIL PROTECTED]> wrote: > Hi Gents, > I tried both suggestions: > > # > # For each log in the array > # - grab the directory and name of the file. > # - send via sendmail > # > foreach $hashEntry ( @LOGS ) > { > > my ( $localfile) = $hashEntry->{name}; > my ( $err_msg ) = ""; # error message variable > > my $cmd = ""; > > # > # Get row count of each file, to generate results file > # > my $oBook = new Spreadsheet::ParseExcel::Workbook->Parse($localfile); > my $oWkS = ${$oBook->{Worksheet}}[0]; > > print "------ SHEET: ".$oWkS->{Name}. "\n"; > print "Row: ".$oWkS->{MinRow}." v ".$oWkS->{MaxRow}."\n"; > > $resultMessage.=sprintf("%s,%s\n",basename($localfile),$oWkS->{MaxRow}); > } > > But I still get an out of memory error on the 10th file opened. > > Any additional suggestions? > > On 4/27/05, Bakken, Luke <[EMAIL PROTECTED]> wrote: > > > my $oBook; > > > my $oWks; > > > foreach $hashEntry ( @LOGS ) > > > { > > > > > > my ( $localfile) = $hashEntry->{name}; > > > my ( $err_msg ) = ""; # error message > > > variable > > > > > > > > > my $cmd = ""; > > > > > > # > > > # Get row count of each file, to generate results file > > > # > > > $oBook = new > > > Spreadsheet::ParseExcel::Workbook->Parse($localfile); my > > > ($iR, $iC, $oWkS, $oWkC); $oWkS = ${$oBook->{Worksheet}}[0]; > > > > > > print "------ SHEET: ".$oWkS->{Name}. "\n"; > > > print "Row: ".$oWkS->{MinRow}." v ".$oWkS->{MaxRow}."\n"; > > > > > > $resultMessage.=basename($localfile).",".$oWkS->{MaxRow}."\n"; } > > > > > > The problem I am running into is after 10 files (in testing all 31 > > > files are the same source file with different names), and then I get > > > an out of memory error. Anyone have any idea how I can clean out the > > > memory. I have a feeling it might be some autocaching or something > > > not getting cleaned up within ParseExcel. > > > > If you move the 'my $oBook' inside the for loop it the object should be > > destroyed on each iteration: > > > > for my $hashEntry ( @LOGS ) > > { > > > > my ( $localfile) = $hashEntry->{name}; > > my ( $err_msg ) = ""; # error message > > variable > > > > my $cmd = ""; > > > > # > > # Get row count of each file, to generate results file > > # > > my $oBook = new > > Spreadsheet::ParseExcel::Workbook->Parse($localfile); > > my ($iR, $iC, $oWkC); > > my $oWkS = ${$oBook->{Worksheet}}[0]; > > > > print "------ SHEET: ".$oWkS->{Name}. "\n"; > > print "Row: ".$oWkS->{MinRow}." v ".$oWkS->{MaxRow}."\n"; > > > > $resultMessage.=basename($localfile).",".$oWkS->{MaxRow}."\n"; > > } > > > > -- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > > > > -- Primer: Shane Carruth: It's about some engineers that are trying to build a device that "degrades" gravity. They find out it has unexplainable properties. Hilarity ensues. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>