×
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Contact US

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Students Click Here

Problem parsing a CSV file

Problem parsing a CSV file

Problem parsing a CSV file

(OP)
I accidently placed this as a reply to another post.

I have a function which parses a CSV file then extracts records from that file and writes those records to another file. I pass references to the file handles to this function( a reference to $INFILE and $OUTFILE). When the function attempts to parse the CSV file I get the following parse error message: parse failed: No such file or directory. I am able to parse 2 other CSV files but this one particular generates this error message. Does anyone have any ideas on what could cause this parse error? Thanks
in advance for any help offered.

Here's the code:

In the main section:
my $INFILE = "/temp/info.txt";
my $OUTFILE = "/temp/master.txt";

open(IFILE, "$INFILE") || die "Can\'t open input file\n";
open(OFILE, "$OUTFILE") || die "Can\'t open output file\n";

# pass file handle references to function
writeToMasterFile(\*IFILE, \*OFILE);


# function
sub writeToMasterFile
{
     my ($f1, $f2) = @_;

     if ( -r $f1 )
  {
     print "File: $f1 exists and is readable\n";
  }
  else
  {
     print "File: $f1 does not exist and/or is not readable\n";
  }

  while (<$f1>)
  {
    chomp;
    my $csv2 = Text::CSV_XS->new;
    print "$_\n";
    if ( $csv2->parse($_))
    {
        my @mail_entry = $csv2->fields;
        my($accttype, $fname, $mname, $lname, $email, $pphone, $bphone, $address, $city, $state, $pcode, $province, $country, $comments, $refcocust, $refcoacct, $branch, $date, $time) = @mail_entry;     
        #print "\$date = $date\n\n";
        #print "\$time = $time\n\n";
        ($hr, $min, $sec) = split /:/, $time;
        ($mon, $day, $yr) = split /-/, $date;

        #print "\$hr = ", $hr, "\n";
        #print "\$min = ", $min, "\n";
        #print "\$sec = ", $sec, "\n\n";

        #print "\$mon = ", $mon, "\n";
        #print "\$day = ", $day, "\n";     
        #print "\$yr = ", $yr, "\n\n";
      
        if ( $mon == $ymon && $day == $yday && $yr == $yyr )
        {

            if ( $hr >= 12 )
            {
                print $f2 $_, "\n";
            }
            elsif ( $mon == $tmon && $day == $tday && $yr == $tyr )
            {
               if ( $hr < 12 )
               {
                  print $f2 $_, "\n";
               }
            }  
        }

    }
    else
    {
       bail("parse() failed: $!\n");
    }
  }
 
}

RE: Problem parsing a CSV file

First of all this is Perl not C. :)

Second, how are you executing this script?

Are you calling it from a telnet session or something like that, or are you calling it from a web server?

It considering the pathnames you have there, I assume you are doing this on a *nix platform. There are a couple of things which can cause that error:

1) There really is no such file or directory! heh. check your path and make 100% sure that it is correct.


2) The file does not allow read permissions for the user that the script is running as.

3) The directory that the file resides in does not allow read permission for the user that the script is running as.
S
verify that both of your CSV files have the same file permissions, and if they are not in the same folder, make sure that the folders have the same permissions.

Regards,
Gerald


Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members! Already a Member? Login

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close