in reply to Re: isa() on any scalar
in thread isa() on any scalar
No, don't do that.
Assume that UNIVERSAL::new existed. Would you suggest always creating objects with UNIVERSAL::new( $class_name, %data ); too?
Try instead:
my $is_node = eval { $value->isa( 'Node' ) }; # handle not node case if $@ is true or if $is_node is false
This has the advantage of allowing subclasses of Node to override isa() as they see fit, of allowing objects that perform the Node role (see Class::Roles, for example) to work appropriately, and of catching an error if $value is an invalid invocant. It also avoids calling a parent class method specifically on a potential instance of a derived class, which is a bad idea.
Update: Expanded code slightly.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: isa() on any scalar
by gam3 (Curate) on Jun 11, 2005 at 02:15 UTC | |
by chromatic (Archbishop) on Jun 11, 2005 at 08:35 UTC |
In Section
Seekers of Perl Wisdom