package Util::Medley::Package; $Util::Medley::Package::VERSION = '0.032'; use Modern::Perl; use Moose; use namespace::autoclean; use Data::Printer alias => 'pdump'; use Kavorka '-all'; use Scalar::Util; =head1 NAME Util::Medley::Package - Utility methods for packages. =head1 VERSION version 0.032 =cut =head1 SYNOPSIS my $pkg = Util::Medley::Package->new; # # positional # say $pkg->basename('Foo::Bar'); say $pkg->basename(Foo::Bar->new); # # named pair # say $pkg->basename(pkg => 'Foo::Bar'); say $pkg->basename(pkg => Foo::Bar->new); =cut ######################################################## =head1 DESCRIPTION A module that provides utility methods for dealing with packages =cut ######################################################## =head1 ATTRIBUTES none =head1 METHODS =head2 basename Returns basename for a given string or object. For example, Foo::Bar::Biz yields 'Biz'. =over =item usage: say $pkg->basename('Foo::Bar'); say $pkg->basename(Foo::Bar->new); say $pkg->basename(name => 'Foo::Bar'); say $pkg->basename(pkg => Foo::Bar->new); =item args: =over =item pkg [Str|Object] A string or object. =back =back =cut multi method basename (Str|Object :$pkg!) { my $name; if (Scalar::Util::blessed($pkg)) { $name = ref($pkg); } else { $name = $pkg; } my @a = split( /::/, $name ); return pop @a; } multi method basename (Str|Object $pkg) { return $self->basename(pkg => $pkg); } 1;