my %opts = ( param1 => 'default1', param2 => 'default2' ); my $use_default_config = 1; GetOptions("config|c=s" => sub { my ($param, $value) = @_; $use_default_config = 0; read_config_file(\%opt, $value); }, "param1=s" => \$opt{param1}, "param2=s" => \$opt{param2}); read_config_file(\%opt, 'default.config') if $use_default_config;