Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^4: converting txt to csv and formatting

by csorrentini (Acolyte)
on Jul 06, 2014 at 02:16 UTC ( [id://1092420]=note: print w/replies, xml ) Need Help??


in reply to Re^3: converting txt to csv and formatting
in thread converting txt to csv and formatting

I was trying to figure out how to print it to the output file and was hoping that would of made it easy but I was wrong. I modified it to this now:

use warnings; use strict; my $infile="clients.txt"; open my $in, "<", $infile or die $!; open FH, ">" , "clients.csv" or die $!; print FH join ("," => qw(Name Phone E-mail)),$/; while (<$in>) { chomp; print FH $_, "\t"; print FH $/ if $. % 3 == 0; # note here }

This gets the information into the csv file however I still need to modify the formatting, probably with a printf? What currently happens with this script is it creates the three columns "Name, Phone, Email" but the Name field is just the first name of the people while the Phone field gets EVERYTHING else. Would a simple printf or something solve this issue?

Replies are listed 'Best First'.
Re^5: converting txt to csv and formatting
by Jim (Curate) on Jul 06, 2014 at 02:42 UTC

    I recommend you clearly separate the parsing of the input from the formatting and outputting of the CSV records. This is a more maintainable and less error-prone technique than inputting/parsing and formatting/outputting simultaneously. I also think using modular arithmetic with $. ($INPUT_LINE_NUMBER) is less clear than simply reading each trio of lines explicitly as AppleFritter demonstrated here.

    I also recommend you use autodie, explicitly specify the character encodings of the two text files, and explicitly close both file handles.

    use autodie qw( open close ); my $input_file = 'clients.txt'; my $output_file = 'clients.csv'; open my $input_fh, '<encoding(UTF-8)', $input_file; open my $output_fh, '>encoding(UTF-8)', $output_file; # Process the client data file... close $input_fh; close $output_fh; exit 0;

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others surveying the Monastery: (5)
As of 2024-04-19 14:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found