NAME
Package::Abbreviate - shorten package names
SYNOPSIS
use
Package::Abbreviate;
my
$pkg
=
"Foo::Bar::TooLong::PackageName"
;
# no need to abbreviate!
my
$p
= Package::Abbreviate->new(30);
printf
'%30s'
,
$p
->abbr(
$pkg
);
# Foo::Bar::TooLong::PackageName
# a bit shorter
my
$p
= Package::Abbreviate->new(28);
printf
'%28s'
,
$p
->abbr(
$pkg
);
# F::Bar::TooLong::PackageName
# even shorter
my
$p
= Package::Abbreviate->new(24);
printf
'%24s'
,
$p
->abbr(
$pkg
);
# F::B::TL::PackageName
# even! ...oops
my
$p
= Package::Abbreviate->new(20);
printf
'%20s'
,
$p
->abbr(
$pkg
);
# spits a warning
# we can do it more eagerly with an option
my
$p
= Package::Abbreviate->new(20, {
eager
=> 1});
printf
'%20s'
,
$p
->abbr(
$pkg
);
# FB::TL::PackageName
# more eagerly
my
$p
= Package::Abbreviate->new(16, {
eager
=> 1});
printf
'%16s'
,
$p
->abbr(
$pkg
);
# F::B::TL::PN
# even more!
my
$p
= Package::Abbreviate->new(10, {
eager
=> 1});
printf
'%10s'
,
$p
->abbr(
$pkg
);
# FBTLPN
# oops, there's nothing left to cut...
my
$p
= Package::Abbreviate->new(5, {
eager
=> 1});
printf
'%5s'
,
$p
->abbr(
$pkg
);
# spits a warning
DESCRIPTION
When you make a big table that contains a lot of data with (long) package names, you might want to shorten some of them. However, just trimming them with sprintf
or substr
may not work for you.
Package::Abbreviate shortens package names, but also tries not to do too much.
METHODS
new
takes a max length of abbreviations, and an optional hash reference to configure.
- eager
-
lets Package::Abbreviate to shorten the basename and/or omit colons between monikers.
- croak
-
croaks if an error occurs.
abbr
takes one or more package names and returns shortened ones.
If you pass more than one package names, Package::Abbreviate also tests if duplicated names are not generated.
SEE ALSO
AUTHOR
Kenichi Ishigaki, <ishigaki@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2014 by Kenichi Ishigaki.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.