11/17 |
Michael Robinson
|
Cascading ifs are bad:
if (condition) { $value = foo; } elsif (condition) { $value = bar; } elsif (...) { $value = baz; }
You may be able to replace with a table lookup:
my %hash = ( ... ); if (defined $hash{value}) { $value = $hash{value}; }
Or a tabular ternary:
my $salute = $name eq $EMPTY_STR ? 'Dear Customer' ? $name =~ m/ \A((?:Sir|Dame) \s+ \S+) /xms ? "Dear $1" ? $name =~ m/ (.*), \s+ Ph[.]?D \z /xms ? "Dear Dr $1" : "Dear $name"