NAME

Text::FixedLength - Parse and create fixed length field records

SYNOPSIS

use Text::FixedLength;

# -- get fixed length records from delimited text
my @fL = qw(4L 4L 4L 4L); # -- left justified (which is default)
my @fR = qw(4R 4R 4R 4R); # -- right justified (not default)
my $str= join "\t", qw(1 2 3 4);
my @a1 = delim2fixed([ $str ],"\t", \@fL);
my @a2 = delim2fixed([ $str ],"\t", \@fR);
# -- $a1[0] would now hold: '1   2   3   4   '
# -- $a2[0] would now hold: '   1   2   3   4'

# -- get delimited text from fixed length
my @a1 = fixed2delim([ '2233344441' ], [qw(2 3 4 1)], ':');
# -- $a1[0] would now hold: 22:333:4444:1

DESCRIPTION

Text::FixedLength was made to be able to manipulate fixed length field records. You can manipulate arrays of data, or files of data. This module allows you to change between delimited and fixed length records.

E.g. DELIM (with ':' as the delim) aaa:bbb:ccccc:dddddd FIXED 'dion almaer mn55446' where the format is left justified: 8 9 2 5 (SEE FORMATS)

FORMATS

You need to be familiar with the format array references used
to create, and parse fixed length fields.
The array reference holds the length of the field, and optionally
holds either 'L' for left justified, or 'R' for right justified.
By default fields are left justified (but you can change this
default via the setJustify(L || R) functino)

For example if you had the following fixed length record:

1234567890123456789012345 <- place holder
dion    almaer    mn55446

The format (if all left justified) would be:
$format = [ 8, 10, 2, 5 ];

FUNCTIONS

o delim2fixed($filename | $dataAREF, $delim, $formatAREF,[$outfilename])

delim2fixed returns fixed length field records from delimited records

ARGUMENTS:
1: Filename or an array reference holding delimited strings
2: Delimiter for the data in arg 1
3: Format array reference of the fixed lengths (see FORMATS)
4: [OPTIONAL] Filename to write the fixed length data too

RETURNS: Depending on wantarray it will return either an array of
         fixed length records, an array reference, or nothing
e.g. @array = delim2fixed('file',':',[ qw(2 2 4 10) ]);
     $scalar = delim2fixed([ 'foo:bar:whee' ],':',[ qw(5 5 5) ]);
     delim2fixed('file',"\t",[ qw(6 10 4 1) ], 'outputfile');

o fixed2delim($filename | $dataAREF, $formatAREF, $delim, [$outfilename])

fixed2delim returns delimited records from fixed length records

ARGUMENTS:
1. Filename or an array reference holding fixed length records
2. Format array reference for the data in arg 1
3. Delimiter for the output data
4: [OPTIONAL] Filename to write the delimited data too

RETURNS: Depending on wantarray it will return either an array of
         delimited records, an array reference, or nothing
e.g. @array = fixed2delim('file',[ qw(2 2 4 10) ],':');
     $scalar = fixed2delim([ 'foo   bar whee' ],':',[ qw(6 4 4) ]);
     fixed2delim('file',[ qw(6 10 4 1) ],"\t",'outputfile');

NOTE: The resulting strings are cleaned of whitespace at the
      beginning and the end. So '  foo  ' becomes 'foo'
      You do not need to worry about the justification of the
      text as the whitespace is cleaned 

o setJustify($justchar) [either 'L' or 'R'] [default: L]

setJustify sets the default justification (originally set to left).

ARGUMENTS: either L for left justified, or R for right justified

o setCrop($bool) [either 1 or 0] [default: 1]

setCrop sets whether records should be cropped to the size of the format
or not.

For example if you have a string 'whee' that is meant to be fit into
a fixed format of 2 then if setCrop is true the record will be changed
to 'wh' to constrain it