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`
> >>>
> >>>
> >>>
> >>
> >>
> >
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/