in reply to true/false condition - what am I doing wrong?

I've always quite liked this idiom, which scales nicely when you've got lots of choices:

my $type = "add"; my $redo = { add => "wiki_add2", edit => "wiki_edit2", delete => "wiki_remove3", }->{$type} || "wiki_noneoftheabove7"; print "With type: $type, we could redo: $redo \n";

Also since Perl 5.10, we've had the given keyword. Unless you're targeting legacy releases of Perl, that's probably your best bet:

my $type = "add"; my $redo; given ($type) { when ("add") { $redo = "wiki_add2" } when ("edit") { $redo = "wiki_edit2" } when ("remove") { log("REMOVE") and $redo = "wiki_remove2" } default { $redo = "wiki_noneoftheabove7" } } print "With type: $type, we could redo: $redo \n";

In Perl 5.12 onwards, when can be used as a (postfix) statement modifier:

my $type = "add"; my $redo; given ($type) { $redo = "wiki_add2" when "add"; $redo = "wiki_edit2" when "edit"; when ("remove") { log("REMOVE") and $redo = "wiki_remove2" } default { $redo = "wiki_noneoftheabove7" } } print "With type: $type, we could redo: $redo \n";

And from Perl 5.14, it gets even better, as given has a useful return value.

my $type = "add"; my $redo = given ($type) { "wiki_add2" when "add"; "wiki_edit2" when "edit"; when ("remove") { log("REMOVE") and "wiki_remove2" } default { "wiki_noneoftheabove7" } }; print "With type: $type, we could redo: $redo \n";