NAME
Text::FixedLength::Extra - various niceties for Text::FixedLength lovers.
SYNOPSIS
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