Beefy Boxes and Bandwidth Generously Provided by pair Networks vroom
Syntactic Confectionery Delight
 
PerlMonks  

Re: Elegant way of destroying a list

by Adam (Vicar)
on Jan 23, 2001 at 17:09 UTC ( [id://53751]=note: print w/replies, xml ) Need Help??

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


in reply to Elegant way of destroying a list

turnstep already pointed you at undef, but I'm left wondering, "Why do you want to destroy the list?" Ok, I know the most obvious answer, "To reclaim the memory," but that leaves me thinking that you are doing something else wrong. Think about it, if you have a list, and you don't need it anymore, shouldn't Perl take care of it for you? Well, yes, but only if you tell Perl to do so. And the way to do this is to scope your array, so that when you are done with it, it goes out of scope. Now if you are not already doing this, then you are also not using strict. It is never too late to start using this great tool.

But Adam, you say, I am scoping the array using my, I just wanted to reuse the array inside the same scope. Well, don't. But if you are just writing a hack, and good programming isn't part of it, then in that case, use undef, or set the array to an empty array, or set the index of the last element to -1.

$#arrayName = -1;

Replies are listed 'Best First'.
Re: Re: Elegant way of destroying a list
by JojoLinkyBob (Scribe) on Jan 23, 2001 at 20:56 UTC
    Usually I try to pop the elements as I use them, so there's no additional cleanup needed in the end, or if it's at the end of the script, there's not really a need to manually delete it. Here's the script I was writing, where I was needing it.

    while (<infp>) { if (/^%!PS-Adobe/) #Start of Page Marker { if ($found_match) { @linelist = reverse @linelist; while ($line = pop(@linelist)) { print $line; } $found_match = 0; } else { #Empty List undef @linelist; } } elsif(/^%%Title/) { for $z(@figlist) { if (/$z[A-Za-z]*\.eps/i) { $found_match = 1; } } } push @linelist, $_; }

    Basically it parse a PostScript file, ripping out only the pages that match a certain search criteria (@figlist)

    I guess a different design would have prevented the need to delete the list. I never really used the "strict" keyword, but I'm glad you brought it up, it does help enforce good coding.

    Thanks for your response!

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://53751]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.