in reply to Using static variable in perl

See the state keyword. Alternatively, just use a global variable outside of your subroutine. Also see perlfaq7 for "How Do I Create A Static Variable?

Replies are listed 'Best First'.
Re^2: Using static variable in perl
by JavaFan (Canon) on Mar 08, 2011 at 12:23 UTC
    Note that one can only create scalar static variables. So the OP should use an arrayref instead of an array if the OP decides to use a static variable.
      No, state works just fine with arrays and hashes.
      #!/ActivePerl/bin/perl use strict; use warnings; use feature (qw/state say/); store_and_print_hash('a'); store_and_print_hash('b'); store_and_print_hash('c'); store_and_print_array('x'); store_and_print_array('y'); store_and_print_array('z'); sub store_and_print_hash { state %hash; my $key = shift; $hash{$key} = 1; say "Hash keys: (" , join(', ' , sort keys %hash), ")"; } sub store_and_print_array { state @array; my $value = shift; push @array, $value; say "Array values: (" , join(', ' , @array), ")"; }
      results in
      Hash keys: (a) Hash keys: (a, b) Hash keys: (a, b, c) Array values: (x) Array values: (x, y) Array values: (x, y, z)
      -- Am I the only one who still cares about RT #67694?