Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re: Why can't I open a file for writing?

by Laurent_R (Canon)
on Jan 13, 2018 at 15:48 UTC ( #1207197=note: print w/replies, xml ) Need Help??

in reply to Why can't I open a file for writing?

In addition to what other monks have already said, please note that glob "*" or <$dir/*> will return a list of files with their path. So, @files will contain things such as /some/directory/here/foo.txt. This is OK for reading the files in the foreach loop (and this is often what you want), but this:
$outputfile = $inputfile; open NEWFILE, '>', "$dir/subdirectory/$outputfile" or die "... $!" +;
will probably fail, or, at the very least, not work as expected, because the new file to be created will look like /some/directory/here/subdirectory/some/directory/here/foo.txt which is presumably not what you want. So you probably to extract the file name (without the path) before assigning outputfile or use some other means for creating the list of files.

Replies are listed 'Best First'.
Re^2: Why can't I open a file for writing?
by karlgoethebier (Monsignor) on Jan 14, 2018 at 10:32 UTC

    BTW, you might also try

    use strict; use warnings, use autodie; open my $new_file, '>', qq($dir/subdirectory/$outputfile);

    ...instead of open NEWFILE, '>', "$dir/subdirectory/$outputfile" || die qq(Crap: $!)

    See also Why the Modern Perl Book Avoids Bareword Filehandles and autodie.

    Best regards, Karl

    «The Crux of the Biscuit is the Apostrophe»

    perl -MCrypt::CBC -E 'say Crypt::CBC->new(-key=>'kgb',-cipher=>"Blowfish")->decrypt_hex($ENV{KARL});'Help

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1207197]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (3)
As of 2018-08-14 06:42 GMT
Find Nodes?
    Voting Booth?
    Asked to put a square peg in a round hole, I would:

    Results (144 votes). Check out past polls.