NAME
Text::Sprintf::Named - sprintf-like function with named conversions
VERSION
Version 0.0402
SYNOPSIS
use Text::Sprintf::Named;
my $formatter =
Text::Sprintf::Named->new(
{fmt => "Hello %(name)s! Today is %(day)s!"}
);
# Returns "Hello Ayeleth! Today is Sunday!"
$formatter->format({args => {'name' => "Ayeleth", 'day' => "Sunday"}});
# Returns "Hello John! Today is Thursday!"
$formatter->format({args => {'name' => "John", 'day' => "Thursday"}});
# Or alternatively using the non-OOP interface:
use Text::Sprintf::Named qw(named_sprintf);
# Prints "Hello Sophie!" (and a newline).
print named_sprintf("Hello %(name)s!\n", { name => 'Sophie' });
# Same, but with a flattened parameter list (not inside a hash reference)
print named_sprintf("Hello %(name)s!\n", name => 'Sophie');
DESCRIPTION
Text::Sprintf::Named provides a sprintf equivalent with named conversions. Named conversions are sprintf field specifiers (like "%s"
or "%4d
") only they are associated with the key of an associative array of parameters. So for example "%(name)s"
will emit the 'name'
parameter as a string, and "%(num)4d"
will emit the 'num'
parameter as a variable with a width of 4.
FUNCTIONS
my $formatter = Text::Sprintf::Named->new({fmt => $format})
Creates a new object which formats according to the $format
format.
$formatter->format({args => \%bindings})
Returns the formatting string as formatted using the named parameters pointed to by the args
parameter.
$self->calc_param({%args})
This method is used to calculate the parameter for the conversion. It can be over-rided by subclasses so it will behave differently. An example can be found in t/02-override-param-retrieval.t
where it is used to call the accessors of an object for values.
%args contains:
named_params
The named paramters.
name
The name of the conversion.
named_sprintf($format, {%parameters})
named_sprintf($format, %parameters)
This is a convenience function to directly format a string with the named parameters, which can be specified inside a (non-blessed) hash reference or as a flattened hash. See the synopsis for an example.
AUTHOR
Shlomi Fish, shlomif@cpan.org
, http://www.shlomifish.org/
BUGS
Please report any bugs or feature requests to bug-text-sprintf-named at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Text::Sprintf::Named. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Text::Sprintf::Named
You can also look for information at:
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Text::Sprintf::Named
Search CPAN
Subversion Repository
http://svn.berlios.de/svnroot/repos/web-cpan/Text-Sprintf/trunk/
ACKNOWLEDGEMENTS
The (possibly ad-hoc) regex for matching the optional digits+symbols parameters' prefix of the sprintf conversion was originally written by Bart Lateur (BARTL on CPAN) for his String::Sprintf module.
The syntax was borrowed directly from Python’s "%" operator when used with its dictionaries as the right-hand argument. A quick web search did not yield good documentation about it (and I came with the idea of a named sprintf without knowing that Python had it, only ran into the fact that Python had it by web-searching).
SIMILAR MODULES
Text::sprintfn is a newer module which only provides a procedural interface that allows one to mix positional and named arguments, with some other interesting features.
String::Formatter is a comprehensive module that allows one to define custom sprintf-like functions (I’m not sure whether it has named conversions). Its license is the GNU General Public Licence version 2 (GPLv2), which is both restrictive and incompatible with version 3 of the GPL and with many other open-source licenses.
String::Sprintf appears to allow one to provide custom sprintf/printf formats (without providing named conversions).
For the lighter side, there is Acme::StringFormat, which provides a "%" operator to format a string.
COPYRIGHT & LICENSE
Copyright 2006 Shlomi Fish, all rights reserved.
This program is released under the following license: MIT/X11: