Instead of taking the file as an input parameter, try to parse the file by hard coding its name in the script and let us know the outcome.
Cheers, Parag On Sun, Nov 7, 2010 at 6:00 PM, J M <jmd...@gmail.com> wrote: > Hi all, > > I'm having great issues with my program at the moment... it is supposed to > take a csv file and parse it, with the output being stored in a MySQL > database. The problem I'm having is that the file I need to parse > ('ish_history.csv') will not open in the program for some reason. I know > the > file exists, I'm on a linux system and the file is world-readable, and I've > tried placing the file in the directory the script is run from AS WELL as > using full path names to said file... all has resulted in no luck, and I'm > getting the "No such file or directory" error. Here is my code so far: > > > > [code] > #! /usr/bin/perl > # > use DBI; > use DBD::mysql; > use Text::CSV; > > > #configure variables > my $host = "localhost"; > my $db = "somefakedatabase"; > my $table = "somefaketable"; > my $user = "somefakeuser"; > my $password = "yeahrightlikethisismyrealpasswordLOL"; > > #connect to the database > my $dbc = "dbi:mysql:$db:$host"; > if(my $dbh = DBI->connect($dbc, $user, $password) or die "Can't connect to > the > database: $DBI::errstr\n") { > print "Connected to the database!"; > } > > #setup parser > my $csv = Text::CSV->new(); > print "What is the name of the file? : "; > chomp(my $file = <STDIN>); > > open CSV, "<", $file or die "Can't open the file \"$file\": $!"; > while(<CSV>) { > next if ($. == 1); > if ($csv->parse($_)) { > my @columns = $csv->fields(); > my $myquery = $dbh->prepare('insert into $table > > (station_number,WBAN_number,station_name,country,fips,state,ICAO_callsign,lattitude,longitude,elevation) > values ($columns[0], $columns[1], **truncated** > $myquery->execute(); > $dbh->disconnect(); > } else { > my $err = $csv->error_input; > print "Failed to parse line: $err"; > } > } > close CSV; > closedir TMPDIR; > [\code] > > Any ideas as to why this isn't working? >