Package Info

perl-Safe-Isa


Call isa, can, does and DOES safely on things that may not be objects


Development/Libraries/Perl

How many times have you found yourself writing:

if ($obj->isa('Something')) {

and then shortly afterwards cursing and changing it to:

if (Scalar::Util::blessed($obj) and $obj->isa('Something')) {

Right. That's why this module exists.

Since perl allows us to provide a subroutine reference or a method name to the -> operator when used as a method call, and a subroutine doesn't require the invocant to actually be an object, we can create safe versions of isa, can and friends by using a subroutine reference that only tries to call the method if it's used on an object. So:

my $isa_Foo = $maybe_an_object->$_call_if_object(isa => 'Foo');

is equivalent to

my $isa_Foo = do { if (Scalar::Util::blessed($maybe_an_object)) { $maybe_an_object->isa('Foo'); } else { undef; } };

Note that we don't handle trying class names, because many things are valid class names that you might not want to treat as one (like say "Matt") - the 'is_module_name' function from Module::Runtime is a good way to check for something you might be able to call methods on if you want to do that.

We are careful to make sure that scalar/list context is preserved for the method that is eventually called.


License: Artistic-1.0 OR GPL-1.0-or-later
URL: http://search.cpan.org/dist/Safe-Isa/

Categories

Releases

Package Version Update ID Released Package Hub Version Platforms Subpackages
1.000010-bp156.3.1 info GA Release 2023-07-22 15 SP6
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-Safe-Isa
1.000010-bp155.2.12 info GA Release 2023-05-17 15 SP5
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-Safe-Isa
1.000010-bp154.1.30 info GA Release 2022-05-09 15 SP4
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-Safe-Isa
1.000010-bp153.1.15 info GA Release 2021-03-06 15 SP3
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-Safe-Isa
1.000010-bp152.3.18 info GA Release 2020-04-16 15 SP2
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-Safe-Isa
1.000010-bp151.3.1 info GA Release 2019-07-16 15 SP1
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-Safe-Isa
1.000010-bp151.2.14 info GA Release 2019-05-18 15 SP1
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-Safe-Isa
1.000010-bp150.2.4 info GA Release 2018-07-30 15
  • AArch64
  • ppc64le
  • s390x
  • x86-64
  • perl-Safe-Isa