use warnings; use strict; { package Foo; our $DEFAULT_BAR = 1; sub foo { my %opts = @_; $opts{bar} //= $DEFAULT_BAR; print "bar=$opts{bar}\n"; } } Foo::foo(); # prints "bar=1" Foo::foo(bar=>2); # prints "bar=2"