Perl x Open Food Facts Hackathon: Paris, France - May 24-25 Learn more

NAME

Data::EDI::X12 - EDI X12 Processing for Perl

SYNOPSIS

my $x12 = Data::EDI::X12->new({ spec_file => 'edi.yaml', new_lines => 1, truncate_null => 1 });
my $data = $x12->read_record(...);
print $x12->write_record($data);

METHODS

new

my $x12 = Data::EDI::X12->new({ spec_file => 'edi.yaml', new_lines => 1, truncate_null => 1 });

read_record

my $record = $x12->read_record($string);

write_record

my $string = $x12->write_record($record);

EXAMPLES

SPEC FILE EXAMPLE

850:
structure:
header:
- BEG
- DTM
- N9
- N1
detail:
- PO1
- PID
footer:
- CTT
segments:
BEG:
definition:
- name: purpose_codse
min: 2
max: 2
- name: type_code
min: 2
max: 2
- name: order_number
min: 1
max: 22
- type: filler
- name: date
min: 8
max: 8
DTM:
definition:
- name: qualifier
min: 3
max: 3
- name: date
min: 8
max: 8
N9:
definition:
- name: qualifier
min: 2
max: 3
- name: identification
min: 1
max: 50
N1:
definition:
- name: identifier
min: 2
max: 3
- name: name
min: 1
max: 60
- name: identification_code_qualifier
min: 1
max: 2
- name: identification_code
min: 2
max: 80
PO1:
definition:
- type: filler
- name: quantity
min: 1
max: 15
- name: unit_of_measure
min: 2
max: 2
- name: unit_price
min: 1
max: 17
- type: filler
- name: id_qualifier
min: 2
max: 2
- name: product_id
min: 1
max: 48
- name: id_qualifier_2
min: 2
max: 2
- name: product_id_2
min: 1
max: 48
- name: id_qualifier_3
min: 2
max: 2
- name: product_id_3
min: 1
max: 48
PID:
definition:
- name: type
- type: filler
- type: filler
- type: filler
- name: description
min: 1
max: 80
CTT:
definition:
- name: total_items
min: 1
max: 6
- name: hash_total
min: 1
max: 10

PERL EXAMPLE

my $string = q[ISA*00* *00* *01*012345675 *01*987654321 *140220*1100*^*00501*000000001*0*P*>~
GS*PO*012345675*987654321*20140220*1100*000000001*X*005010~
ST*850*0001~
BEG*00*KN*1136064**20140220~
DTM*002*20140220~
N9*ZA*0000010555~
N1*ST*U997*92*U997~
PO1**1*EA*1.11**UC*000000000007*PI*000000000000000004*VN*113~
PID*F****Test Product 1~
PO1**1*EA*2.22**UC*000000000008*PI*000000000000000005*VN*114~
PID*F****Test Product 2~
CTT*4*4~
SE*12*0001~
GE*1*000000001~
IEA*1*000000001~
];
my $x12 = Data::EDI::X12->new({ spec_file => 't/spec.yaml', new_lines => 1, truncate_null => 1 });
my $record = $x12->read_record($string);
my $out = $x12->write_record($record);

LOOPS

Both implicit and explicit loop segments are also supported by this module. Please review the loops test for an example.

HISTORY

This module was authored for Bizowie.

AUTHOR

Bizowie

COPYRIGHT AND LICENSE

Copyright (C) 2014, 2015, 2016 Bizowie

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available.