On Sat, 12 Mar 2005 02:06:20 +0100 (MET), Louis Pouzin wrote:

>I would like to make a library subroutine that maintains the value of some 
>local variables between successive calls. Is there such variable type in Perl ?
>
>As a substitute I've been using "use vars ...". It works, but those variables 
>may be clobbered from any part of a program. Is there a better way ?

Use a lexical, in a block around your subs you want to allow access.
Like this:

        {
            my $count;

            sub get {
                return ++$count;
            }

            sub clear {
                undef $count;
            }
        }


        $\ = "\n";
        for (1..5) {
           print get;
        }
        clear();
        for (1..3) {
           print get;
        }

Result:

        1
        2
        3
        4
        5
        1
        2
        3

-- 
        Bart.

Reply via email to