In my code, I often write things like this:
my $a = defined $scalar ? $scalar : $default_value;
or
my $b = exists $hash{$_}
Assuming you're using Perl 5.10 and above, you can use the // operator.
my $a = defined $x ? $x : $default; # clunky way
my $a = $x // $default; # nice way
Similarly you can do
my $b = defined $hash{$_} ? $hash{$_} : $default; # clunky
my $b = $hash{$_} // $default; # nice
Note that in my example above I'm checking defined $hash{$_}, not exists $hash{$_} like you had. There's no shorthand for existence like there is for definedness.
Finally, you have the //= operator, so you can do;
$a = $x unless defined $a; # clunky
$a //= $x; # nice
This is analogous to the ||= which does the same for truth:
$a = $x unless $x; # Checks for truth, not definedness.
$a ||= $x;