Here data structure is the key. It looks like you are using three arrays in parallel to manage data records. Instead you should be using an array of records - each record being either a hash or an array as you think most appropriate. Consider:
#!/usr/bin/perl use strict; use warnings; use Text::CSV; my @ports = qw(portname portID port802); my @val1 = qw(ON ON OFF); my @val2 = qw(EX EX NEX); my @records; while (@ports) { push @records, [shift @ports, shift @val1, shift @val2]; } my $csv = Text::CSV->new ({sep_char => ';'}); for my $record (@records) { if ($csv->combine (@$record)) { print $csv->string, "\n"; } else { print "combine () failed on argument: ", $csv->error_input, "\ +n"; } }
Prints:
portname;ON;EX portID;ON;EX port802;OFF;NEX
Note that much of the rest of your program would likely benefit from using record oriented storage as illustrated rather than scattering related data across disparate arrays as indicated in your sample.
In reply to Re^3: Creating CSV file
by GrandFather
in thread Creating CSV file
by reez
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |