I've always used scoping braces to create static variables.
add() for 1..2; # Append to existing.
add('foo', 'bar'); # Re-initialize if args are passed.
add() for 1..2; # Append to existing.
{
my @arr;
sub add {
@arr = @_ if @_;
push @arr, '+';
print @arr, "\n";
}
}