Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^7: Processing CSV File

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


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

You deserve a medal! That works perfectly!
The problem with #2 is;
If i open the .CSV in MS Excel, make a change and save it, then when i run the .pl, i get the following error:

Use of uninitialized value $vars in chomp at create-configs.pl line 18 +, <$csvfh> line 1. Use of uninitialized value $vars in split at create-configs.pl line 19 +, <$csvfh> line 1.

However, if i open the .CSV in excel, make the changes, then open it with something like Text Edit, and go to the end of each line in the CSV, and press delete, then enter (to put evreything back to its own line), then when I run the .pl it works perfectly..
Does that make sense? if not, let me know, and I will try and send you the files if possible, so you can know what i mean..
Once again, your help is invaluable..


Comment on Re^7: Processing CSV File
Download Code
Re^8: Processing CSV File
by Kenosis (Priest) on Oct 05, 2012 at 04:45 UTC

    Are you able to install Perl Modules? If so, install Text::CSV, and let me know when this is done.

    There are two reasons that the Module may serve you well in this case. The first is that it's generally a best practice to use a Module that's built to handle csv files. In your case, the csv format wasn't complex, i.e., commas within quoted fields, so just splitting on commas was OK. However, thinking long-term, your data may get more complex, and Text::CSV would be able to handle it.

    The second reason is based upon the error messages you shared. The variable $vars was uninitialized when it should have contained a value. This may be an issue of the csv file containing binary data, but I'm not sure. Text::CSV can handle this, too.

    Let me know...

      Thanks for the reply Kenosis
      I was trying to steer clear of installing modules, as the script could be used on different machines at any time all over the place, of which some I do not have control.. so was hoping to have a script that worked 'out of the box' on any machine.
      Do you think there would be any way around it?
      If there really is no other way, then perhaps I will need to explore that option.. but would prefer not to if at all possible
      Thanks

        Give the following change a try:

        open my $csvfh, '<:crlf', $csvFile or die "Unable to open $csvFile: $! +"; ^ | + - Add the :crlf

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (8)
As of 2014-08-01 05:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (256 votes), past polls