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

[email protected] ("Mimi Cafe")
Newsgroups perl.beginners.cgi
Message-ID <[email protected]>
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

Here is a section of the script

use strict;
use warnings;
#use diagnostics;
use Getopt::Long;

use constant DEFAULT_REPORTDIR => ".\\compare_report";

my $master_list = "";
my @compare_lists = "";
my $help = "";

Getopt::Long::Configure ("ignorecase");

GetOptions(
 "master=s" => \$master_list,
 "compare:s" => \@compare_lists,
 "help|?!" => \$help,
);

usage() if $help;
@compare_lists = split(' ',join(' ',@compare_lists));
foreach (@compare_lists){
 die "File $_ does not exist or it's empty. Please check the file try
again.\n" unless -s $_;
}

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

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.