This wouldn't be an issue at all if you used the standard module Getopt::Long.

Anyway,

my $source_file = defined($options{o}) ? $options{o} : 'as.xcf-dist';

or

my $source_file = 'as.xcf-dist'; $source_file = $options{o} if defined($options{o});

or

my $source_file = $options{o}; $source_file = 'as.xcf-dist' if !defined($options{o});

or

sub defined_or { defined($_[0]) ? $_[0] : $_[1] } my $source_file = defined_or( $options{o}, 'as.xcf-dist' );

or

# Requires 5.10 my $source_file = $options{o} // 'as.xcf-dist';

In reply to Re: checking $option by ikegami
in thread question about getopt by Sun751

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":