Re: Could not open testfile.txt: No such file or directory

[email protected] (Matthew Whipple)
Newsgroups perl.beginners.cgi
Message-ID <[email protected]>
On Fri, 2008-05-30 at 13:04 +0100, Mimi Cafe wrote:
> Still cannot see why Perl complains that  Could not open file for reading.
> File or directory does exist.
> I have modified my script and now using Getopt::Long module instead of the
> @ARGV variable. Can someone take a look?
> 
> The script is now run with command line options like this:
> myscript --master --compare file_name --compare another_file

Are you missing a "file_name" in that command template?

Does this work when you hard code the filenames?  When you use full
pathnames or fully qualified relative paths?  Does this work with only a
single compare option?


> ################################
> #foreach (@compare_lists){print "$_\n";} # This prints the CLI arguments
> correctly.
> #################################

You may want to use a more visible delimiter to ensure that there's no
whitespace issues.  


> 
> my $outputdir = DEFAULT_REPORTDIR;
> unless (-d $outputdir){
>  mkdir ($outputdir) or die "could not create dir for $outputdir: $!\n";
> }
> 
> # Read the master list and populate our array.
> open (MASTERFILE, "<", $master_list) or die "Could not open $master_list for
> reading: $!\n";
> my @master_clients = <MASTERFILE>;
> close MASTERFILE;
> ##############################
> #print "master list starts below:\n";
> #foreach (@master_clients){print "$_\n";}exit;
> ######################################
> my (%inputclient,$list);
> 
> # Read the other files and compare the content to the master client list.
> foreach $list (@compare_lists){
>  # Output file name set of element curerently processed.
>  # Open file to read from.
>  open(INPUTFH, "<", $list) or die "Could not open $list for reading:
> $!\n"; # Could
> not open file for reading. File or directory does exist.
>  while (<INPUTFH>){
>    chomp;
>    $inputclient{"s_"} = $_;
>  }
>  close INPUTFH;
> 
>  #$outputfile = "NOT_IN" . "$outputfile";
>  my $outputfile = $list;
>  my (@missing_clients, %outputclient);
> 
>  open (OUTPUTFILE, ">", $outputfile) || die "Could not open $outputfile:
> $!\n";
>  foreach my $aditem (@master_clients){
>   push (@missing_clients, $aditem) unless exists $inputclient{"$aditem"};
>  }
> 
> 
> 
>  On 29/05/2008, Mimi Cafe <[email protected]> wrote:
> >
> >
> >  I am on Windows so it should not be case-sensitive. The script and all
> >> required files in one folder. I pass 3 arguments to the script (script.pl
> >> file1 file2 file3)and I can open the first file stored in $ARGV[0] as seen
> >> below:
> >>
> >> my $ad_clients = shift @ARGV;
> >>
> >> open (ADFILE, "<", $ad_clients) or die "Could not open $ad_clients for
> >> reading: $! \n"; # This works fine!
> >> my @ad_clients = <ADFILE>;
> >> close ADFILE;
> >>
> >> my %inputclient;
> >>
> >> foreach my $supplied (@ARGV){
> >> open (INPUTFILE, "<", $supplied) or die "Could not open $supplied for
> >> reading: $!\n # This does not works! Error: No such file or directory
> >>
> > Mimi
> >
> >>
> >>
> >>
> >>
> >> On 29/05/2008, Ken Foskey <[email protected]> wrote:
> >>>
> >>>  On Thu, 2008-05-29 at 11:45 +0100, Mimi Cafe wrote:
> >>>
> >>> my script is in the same directory as my files, but it cannot find the file
> >>> ABC.txt in open() below.
> >>>
> >>> foreach my $supplied (@ARGV){
> >>>  # Output file name set of element currently processed.
> >>>
> >>>  # Open file to read from.
> >>>  open (INPUTFILE, "<", "$supplied") or die "Could not open $supplied: $!\n";
> >>> # Error: No such file or directory.
> >>> }
> >>>
> >>> Any help
> >>>
> >>> Mimi
> >>>
> >>>
> >>>
> >>> for starters you might want to look at the <> operator:
> >>>
> >>> while( <> ) {
> >>> }
> >>>
> >>> Will read each file on the command line in sequence, saves you thinking
> >>> about it.
> >>>
> >>> If it is Unix it is case sensitive,  is this your problem?
> >>>
> >>> Are you actually in the directory?   `bin/myscript.pl bin/ABC.txt`
> >>>
> >>>
> >>>
> >>
> >>
> >
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.