http://qs321.pair.com?node_id=717245


in reply to Re^5: Using a scalar as a constant?
in thread Using a scalar as a constant?

That wouldn't work if the sub is AUTOLOADED, and the package doesn't redefine 'can' to reflect this. (I've seen many packages using AUTOLOAD that don't redefined 'can').

Having said that, and given the fact the subname comes from some XML document whose creation may not be under our control, I would neither use eval, nor a symref, and not can either. I'd make a dispatch table allowing only values I approve of.

my $style = ... retrieve from XML document ... my $value; given ($style) { when ("sub1") {$value = sub1} when ("sub2") {$value = sub2} ... default {die "Illegal style '$style'"} } Wx::TextCtrl->new( $self, -1, "", [5, 10], [-1, -1], $value);