Ich benutze immer Prototypen bei meinen Funktionen.
Das hat den Vorteil, dass ich gewarnt werde, falls ich eine Funktion falsch aufrufe ohne die Warnung noch mit einzuprogrammieren.
Und ich hole mir am Anfang erstmal alles aus @_. Danach gucke ich bei bestimmten Werten nur noch, ob sie auch richtig gesetzt wurden.
Das könnte bei dir dann so aussehen:
sub get_fh($$;$)
{
my($class, $file, $option) = @_; # pick parameters
$option ||= "dummy"; # set default option
MfG PerlProfi