akku_batra
asked on
Printing a Report using Bytes
Hi All,
I am having a problem and i need to print a report using PERL. Now problem is this that every data which i am printing in that must have specified byte.
Say - I am having A,B,C,D,E,F,G,H and Icolumn which need to to be printed in a flat file and it is having following requirements -
Column Name Length Position Type
A 1 1 Char
B 11 2 Integer
C 10 13 Char
D 8 23 Char
E 1 31 Char
F 150 32 Varchar
G 8 182 Date
H 40 190 Varchar
I 8 230 Date
Now every record length must be 238 bytes.
I am not having idea how can we do this. Can somebody help me in this ? We have to print this report in a while loop and every line of record must have 238 bytes.
Thanks in advance.....
Akku
I am having a problem and i need to print a report using PERL. Now problem is this that every data which i am printing in that must have specified byte.
Say - I am having A,B,C,D,E,F,G,H and Icolumn which need to to be printed in a flat file and it is having following requirements -
Column Name Length Position Type
A 1 1 Char
B 11 2 Integer
C 10 13 Char
D 8 23 Char
E 1 31 Char
F 150 32 Varchar
G 8 182 Date
H 40 190 Varchar
I 8 230 Date
Now every record length must be 238 bytes.
I am not having idea how can we do this. Can somebody help me in this ? We have to print this report in a while loop and every line of record must have 238 bytes.
Thanks in advance.....
Akku
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Nothing has happened on this question in more than 5 weeks. It's time for cleanup!
My recommendation, which I will post in the Cleanup topic area, is to
accept answer by terageek (too few points to split, but kandura's answer is also good).
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
jmcg
EE Cleanup Volunteer
My recommendation, which I will post in the Cleanup topic area, is to
accept answer by terageek (too few points to split, but kandura's answer is also good).
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
jmcg
EE Cleanup Volunteer
$record = pack "A1 A11 A10 A8 A1 A150 A8 A40 A8 " , @your_fields;
Note that you can also put the numbers in [ ] when using perl 5.8, which is a bit more readable:
$record = pack "A[1] A[11] A[10] A[8] A[1] A[150] A[8] A[40] A[8] ", @your_fields;
The A means that it's a string, padded with spaces if necessary.