in reply to syntax of defined

In Perl 5 you need parenthesis directly after the 'if', and curlies both after if and else:
if (defined param('end_date')) { ... } else { ... }

see perlintro, perlsyn.

(In Perl 6 you can omit the parenthesis)

Replies are listed 'Best First'.
Re^2: syntax of defined
by ikegami (Patriarch) on Mar 09, 2010 at 23:00 UTC

    In Perl 5 you need parenthesis directly after the 'if',

    Except if you use the if statement modifier

    bar() if foo();

    Mind you, the statement modifier wouldn't be useful here. The condition operator, on the other hand, would be useful.

    $user_input->{end_date} = defined(param('end_date')) ? param('end_date') : param('start_date');

    Mind you, param('end_date') can still be called twice for nothing. The following doesn't:

    $user_input->{end_date} = param('end_date'); $user_input->{end_date} = param('start_date') if !defined($user_input->{end_date});
    Since 5.10, the above can be simplified to the following:
    $user_input->{end_date} = param('end_date') // param('start_date');
    The following isn't strictly equivalent, but should do the trick if you want something similar while still supporting earlier versions of Perl:
    $user_input->{end_date} = param('end_date') || param('start_date');