\$\begingroup\$
\$\endgroup\$
2
I was using this code to fetch a CGI parameter:
$page = int(param('page'));
This sometimes results in:
warning: Use of uninitialized value in int
Is this a good solution to resolve this warning, or is better and more succinct code available?
if (defined param('page')) {
$param_page = int(param('page'));
} else {
$param_page = 1;
}
200_success
145k22 gold badges190 silver badges478 bronze badges
asked Jun 15, 2016 at 20:44
1 Answer 1
\$\begingroup\$
\$\endgroup\$
1
Standard practice is to scope variables using my
.
Since Perl 5.10, the preferred way to write this is to use the logical defined-or operator to provide a default value when undef
is encountered.
my $param_page = int(param('page') // 1);
answered Jun 15, 2016 at 20:59
-
2\$\begingroup\$ By the way, if you think you should interpret an erroneous
"0"
parameter value as page 1, then you should use the||
operator instead. \$\endgroup\$200_success– 200_success2016年06月15日 21:05:45 +00:00Commented Jun 15, 2016 at 21:05
lang-perl
param
function? \$\endgroup\$use CGI qw/:standard/
at the top of my script which imports the param() function. param() gets a value from the query string. \$\endgroup\$