Re: No such file or directory



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.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 <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`








Relevant Pages

  • Re: No such file or directory
    ... I pass 3 arguments to the script (script.pl ... foreach my $supplied { ... reading: $!\n # This does not works! ... # Open file to read from. ...
    (perl.beginners)
  • Re: No such file or directory
    ... required files in one folder. ... I pass 2 arguments to the script and can I can ... foreach my $supplied { ... reading: $!\n # This does not works! ...
    (perl.beginners)
  • Where did the prophet really live?
    ... > under "North Arabian" is Classical Arabic and idioms that, ... explains why Old Arabic and ANA where written in the Sabaic script. ... Sabaic was the prestige script of the region. ... One doesn't need to dissociate the great reading from the prophet to ...
    (soc.religion.islam)
  • Re: Find and replace with vbscript
    ... Try running Filemon while you run your ... I ran a variation of your script as follows below. ... recorded that WScript began reading at log entry 1187, ... It finished writing at log entry 313307, ...
    (microsoft.public.scripting.vbscript)
  • RE: Trace Viewer
    ... no way from the current API of reading in a random acess form. ... so they are in more managable sizes (I'll attach a script to the ... | I tried to write one trace viewer using virtual list view control. ...
    (microsoft.public.vsnet.enterprise.tools)