On Wed, 2008-12-10 at 13:15 +1030, org chen wrote: > I read a large file into a hash table. This hash table is used only > once in the subroutine. I am very concern the memory usage, So I plan > to realse the memory after used the hash table. The way I used is: > > my %hash = (); > > #read the large file into the hash table > ... > > #release memory > %hash = (); > > Do you think this way will really release memory usage? >
Yes. If you declare the has inside the sub, it will be released when the sub is exited. That is, unless you create a reference to it and store the reference in an outside variable. Example: #!/usr/bin/perl use strict; use warnings; sub foo { my %hash1 = ( a => 1, b => 2 ); # This will be release on exit my %hash2 = ( x => 3.14, y => 1.76 ); return \%hash2; # %hash2 will NOT be released until later } -- Just my 0.00000002 million dollars worth, Shawn The key to success is being too stupid to realize you can fail. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/