Depends on what you want it to do. You need to be aware that:
ikegami's lexical variable version gives "call once globally" semantics, without allowing resets (which you can trivially add by introducing another subroutine that captures the same lexical.) Same for the global variable, except resetting can be done directly.
Personally, I like the idiom
sub foo {
our $CALL_COUNT;
call_me_only_once() unless $CALL_COUNT++;
...do stuff...
}
But I'll admit I always wonder whether the code is going to get run 4.3 billion times and redo the init code...