'b' => exists($tests{'b'}) && defined($m=$tests{'b'}) ? $m : 0,
'a' => exists($tests{'b'}) && defined($m=$tests{'a'}) ? $m : 0,
^^^^^
####
use strict;
use warnings;
use Data::Dump qw/pp dd/;
my %tests = (
'a' => 10,
'b' => 20,
);
my $m;
# this seems to assign $m once and never bother to check again
my %hash;
%hash =
(
'b' => exists($tests{'b'}) && defined($m=$tests{'b'}) ? $m : 0,
'a' => exists($tests{'b'}) && defined($m=$tests{'a'}) ? $m : 0,
);
pp \%hash;
%hash =
(
'b' => exists($tests{'b'}) && defined($m=$tests{'b'}) ? (0+$m) : 0,
'a' => exists($tests{'b'}) && defined($m=$tests{'a'}) ? (0+$m) : 0,
);
pp \%hash;
%hash =
(
'b' => exists($tests{'b'}) && defined($m=$tests{'b'}) ? "$m" : 0,
'a' => exists($tests{'b'}) && defined($m=$tests{'a'}) ? "$m" : 0,
);
pp \%hash;
##
##
{ a => 10, b => 10 }
{ a => 10, b => 20 }
{ a => 10, b => 20 }