Re: No such file or directory
- From: mimicafe@xxxxxxxxxxxxxx (Mimi Cafe)
- Date: Fri, 30 May 2008 11:00:06 +0100
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 <mimicafe@xxxxxxxxxxxxxx> 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.plMimi
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
On 29/05/2008, Ken Foskey <foskey@xxxxxxxxxx> 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`
- References:
- No such file or directory
- From: Mimi Cafe
- Re: No such file or directory
- From: Ken Foskey
- Re: No such file or directory
- From: Mimi Cafe
- Re: No such file or directory
- From: Mimi Cafe
- No such file or directory
- Prev by Date: dependencies, version control and keeping up to date
- Next by Date: Re: How perl program execution happened ?
- Previous by thread: Re: No such file or directory
- Next by thread: what is ^M at the end of a line?
- Index(es):
Relevant Pages
|