state variable


In Perl 5.10 the state keyword was added that allows us to create a static variable. When we declare such variable in a function the declaration and the initialization takes places only once no matter how many times the function is called. Instead of being initialized every time we enter the function like a variable declared with my would do, state variables are initialized only once and then they remember their value for the subsequent calls to the same function.

examples/feature/state.pl
#!/usr/bin/perl 
use strict;
use warnings;

use 5.010;

sub next_counter {
    state $counter = 0;
    $counter++;
    return $counter;
}


say next_counter();
say next_counter();
say next_counter();

1
2
3