Search code examples
perl

What does it mean when 'can' function is used in this way?


I know that 'can' method inspects if package has the method 'some_method'. But, what is happening in the "->(animal => $x)" part?

$z = __PACKAGE__->can("some_method")->(animal => $x)

Solution

  • can() will return reference to method if it exists and then method will be dereferenced with "dereferencing arrow". You must wrap this into eval, or exception will rise if "some_method" doesn't exist. Read more here:

    About can(): perldoc UNIVERSAL

    About dereferencing of subroutines: perldoc perlref