in reply to if else condition not assigning value when using my

The immediate problem is that $rec_type and $y_label need to be global to the if/elsif code. If you have access to Perl 5.10.x however you can use given/when to clean up the code somewhat. Consider:

use strict; use warnings; use 5.010; my $rec_type; my $y_label; given (param('P1P2_bugs')) { when ('P1') { $rec_type = '3'; $y_label = 'Open P1 Bugs'; } when ('P2') { $rec_type = '4'; $y_label = 'Open P2 Bugs'; } when ('P1-P2') { $rec_type = '2'; $y_label = 'Open P1-P2 Bugs'; } when ('Daily-Snapshot') { $rec_type = '1'; $y_label = 'Daily-Snapshot'; } default { die "Unrecognised parameter type: $_\n"; } }

Note that the two variables that are being set are global to the given block and that there is a default handler for unexpected results from param.

True laziness is hard work

Replies are listed 'Best First'.
Re^2: if else condition not assigning value when using my
by LanX (Saint) on Apr 09, 2010 at 01:51 UTC
    In this case of one-to-one mappings I'd rather prefer a hash.

    %radiobutton=( P1 => [ 3, 'Open P1 Bugs' ], P2 => ... ); ($rec_type,$y_label)= @{ $radiobutton{ param('P1P2_bugs') } };

    (untested)

    Cheers Rolf