#modern way
#
my $sortby = $cgi->param( 'sortby' ) // 'name';
# Perl5.8 way
#
my $sortby = $cgi->param( 'sortby' ) || 'name';
# If first value can be zero or empty string ..
#
my $sortby = ( defined $cgi->param( 'sortby' ) ? $cgi->param( 'sortby' )
: 'name'
);
# alternate arrangement
#
my $sortby = ( defined $cgi->param( 'sortby' )
? $cgi->param( 'sortby' )
: 'name'
);
####
my $variable = test1() ? value1
: test2() ? value2
: test3() ? value3
: default_value
;
####
use Readonly;
Readonly my %sql_defaults => ( sortby => 'name',
ascdesc => 'desc',
letter => q{ },
);
my %sql_args;
$sql_args{sortby} = $cgi->param( 'sortby' ) || $sql_default{sortby};
$sql_args{ascdesc} = $cgi->param( 'ascdesc' ) || $sql_default{ascdesc};
$sql_args{letter} = $cgi->param( 'letter' ) || $sql_default{letter};
# alternately, use a suffix 'for' to merge the three lines:
# 'qw()' does 'quote words'
#
$sql_args{$_} = $cgi->param( $_ ) || $sql_default{$_}
for qw( sortby ascdesc letter );