Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^13: Processing CSV File

by Perl3r (Initiate)
on Oct 05, 2012 at 06:00 UTC ( #997390=note: print w/ replies, xml ) Need Help??


in reply to Re^12: Processing CSV File
in thread Processing CSV File

I get the following error

Can't locate Text/CSV_PP.pm in @INC (@INC contains: /Library/Perl/5.12/darwin-thread-multi-2level ....
I did the same thing for the CSV_PP.pm, as was done for the CSV.pm.. ie downloaded the code, and created a CSV_PP.pm in the same directory..
Though no joy there..
Any other ideas?
Thanks


Comment on Re^13: Processing CSV File
Download Code
Re^14: Processing CSV File
by Kenosis (Priest) on Oct 05, 2012 at 06:11 UTC

    Yes, but it's likely you're not going to like it...

    Install Text::CSV, and use the following script:

    #!/usr/bin/perl # use strict; use warnings; use Text::CSV; $ARGV[0] or die "Usage: $0 <filename> [<filename>] ..."; my ( $template_file_name, $templateText, %hash ) = ''; my $csv = Text::CSV->new( { binary => 1, eol => $/ } ) or die "Cannot use CSV: " . Text::CSV->error_diag(); for my $csvFile (@ARGV) { print "\nProcesing file $csvFile ...\n"; open my $csvfh, '<:crlf', $csvFile or die "Unable to open $csvFile +: $!"; # Ignore column names in first line my $columnNames = $csv->getline($csvfh); # Get vars from second line my @vars = @{ $csv->getline($csvfh) }; # Process each csv line while ( my $row = $csv->getline($csvfh) ) { my $templateFN = pop @$row; if ( $template_file_name ne $templateFN ) { $template_file_name = $templateFN; undef $templateText; } # keys: fields from second line; values: fields from csv line @hash{@vars} = @$row; $templateText //= getTemplateText($template_file_name); my $templateTextCopy = $templateText; $templateTextCopy =~ s/$_/$hash{$_}/g for keys %hash; my $ofile_name = $hash{'##rtrname##'} . '.txt'; print "Writing to file: $ofile_name\n"; open my $fh, '>', $ofile_name or die "$ofile_name: $!"; print $fh $templateTextCopy; close $fh; } close $csvfh; } print "\nDone!\n"; sub getTemplateText { my ($template_file_name) = @_; local $/; open my $fh, '<', $template_file_name or die "$template_file_name: + $!"; $templateText = <$fh>; close $fh; return $templateText; }

    If you try it on one machine and it resolves the uninitialized error issue, then there's more diagnostic information to work with.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://997390]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2015-07-04 04:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (57 votes), past polls