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;