in reply to Re: Failed to open file for write
in thread Failed to open file for write

No argument here, but never had this problem with backslashes before. Changed to forward slashes, but now get the following message: "my" variable $files_dir masks earlier declaration in same scope at line 14. Line 14 is: opendir (my $dir_handle, $files_dir); What is this telling me? Sorry for the novice questions.

Replies are listed 'Best First'.
Re^3: Failed to open file for write
by BrowserUk (Patriarch) on Apr 12, 2016 at 23:32 UTC

    Based on your OP code; I cannot see a problem that would cause that error; but you have modified your code and that error message is a typical catchall report that is manifest when perl is confused by a typo.

    The fastest solution would be to post the modified code that is producing the error.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
    In the absence of evidence, opinion is indistinguishable from prejudice.
      I apologize, as taking way too much of your time. Please know that I appreciate your help! Updated code appears below.
      #! /usr/bin/perl -w use strict; use warnings; use lib "c:/strawberry/perl/site/lib"; use open ':std', ':encoding(UTF-8)'; #Specify location of input files; my $files_dir = 'D:/research/audit fee models/filings/test'; #Specify location of output results; my $write_dir = 'D:/research/audit fee models/filings/filenames/filena +mes.txt' #Open the directory containing the input files you will loop through; opendir (my $dir_handle, $files_dir); #Set up a loop for the sequentially reading the input files; while (my $filename = readdir($dir_handle)) { next unless -f $files_dir.'/'.$filename; print "Procesing $filename\n"; #Open the next file in the directory; open my $fh_in, '<', $files_dir.'/'.$filename or die "failed to open '$filename' for read"; #Initialize file counter; my $count=0; #Establish a loop to read the open file line by line; while (my $line = <$fh_in>) { #begin WHILE loop; print $line; #Open the output file for saving the results; open my $fh_out, '>', $write_dir.'/'.$filename or die "failed to open '$filename' for write"; print $fh_out "$line\n"; #write results to file; ++$count; #update line counter; } #end of while loop for current line; print "$count lines read from $filename\n;" } #end of current file loop;
        I don't know if this helps, but...
        #Open the output file for saving the results; open my $fh_out, '>', $write_dir.'/'.$filename or die "failed to open '$filename' for write";
        #Open the output file for saving the results; open my $fh_out, '>', "$write_dir/$filename" or die "failed to open \'$filename\' for write $!";

        You have a semicolon (;) missing on the end of line 11.


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
        In the absence of evidence, opinion is indistinguishable from prejudice.