NAME
Text::FixedLength::Extra - various niceties for Text::FixedLength lovers.
SYNOPSIS
use Text::FixedLength::Extra; #automatically uses Text::FixedLength
my %format = (record_type => '3L', total_orders => '5R');
my @field_order = qw(record_type total_orders);
my %data = (record_type => 'F', total_orders => 300);
# Bonus One: Simplified API to Text::FixedLength !
$x = fixedlength(\%format, \%data, \@field_order);
# Bonus Two: Zero filling and processing of integers and floating points !
my %format = (record_type => '3R', total_orders => '10R*F3');
my @field_order = qw(record_type total_orders);
my %data = (record_type => 'F', total_orders => 300.52894);
$x = fixedlength(\%format, \%data, \@field_order);
DESCRIPTION
Right now, Text::FixedLength::Extra does two things for those who like using Text::FixedLength - simpler API and extended number processing.
Simplified API to Text::FixedLength
A function, fixedlength() has been created which should make it easier to create fixed-width reports. Here is a sample of setting up data for use with fixedlength:
# the fields we will format and their formatting instructions
my %format =
(
record_type => '3',
upc => '13L',
lcc_label => '5R',
lcc_catalog => '7R',
lcc_config => '1',
artist_name => '30L',
item_title => '30L',
quoted_price => '6R',
quantity => '4R',
customer_title => '30L',
customer_reference => '20L'
);
# how to order the fields in %format
my @format = qw(record_type upc lcc_label lcc_catalog
lcc_config artist_name item_title quoted_price quantity
customer_title customer_reference );
my %data = ( record_type => '23423' ... customer_reference => 'adfja;kdf');
my $formatted_line = fixedlength(\%format, %data, \@format);
Number processing
The standard format instruction with Text::FixedLength is
WIDTH JUSTIFICATION?
E.g. 6L creates a left-justified field taking up 6 spaces, filling any non-used spaces with a spaces.
This module re-implements the Text::FixedLength::getFixed function to handle additional optional syntax for formatting numbers. The new format instruction is:
WIDTH JUSTIFICATION? (ZERO_FILL? D)?
or
WIDTH JUSTIFICATION? (ZERO_FILL? F PLACES_AFTER_DECIMAL)?
If you dont understand the above let me give you a nice set of examples:
10R*F3 means uses 10 spaces, zero fill if necessary and allow 3 places after the decimal point.
10R*D means uses 10 spaces, zero fill if necessary.
10RF3 means uses 10 spaces, space fill (not zero-fill, note there was no * in the specification) if necessary and allow 3 places after the decimal point.
EXPORT
fixedlength()
OVERWRITTEN
Text::FixedLength::getFixed()
AUTHOR
T. M. Brannon, <TBONE@CPAN.ORG>
SEE ALSO
perl(1). Parse::FixedLength