How it works for your version of Perl is just a quirk of the implementation. People have used it to make 'static' variables, but that doesn't work as soon as you recurse.
In 5.10, there are static variables, introduced with keyword 'state'.
use 5.010;
sub blabla {
state $x = 0;
say ++$x;
}
blabla;
blabla;
__END__
1
2