http://www.perlmonks.org?node_id=1207190


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

Something I noticed in addition to the comments about open ... or die:

my $dir = '/some/directory/here'; my @files = <$dir/\d{6}*>; # All the relevant files start with 6 numbers, so don't glob others!

Sorry but I don't see how the pattern <$dir/\d{6}*> can be working at all* - glob does not recognize regex syntax, unless you're using some custom module. Always Use strict and warnings - you should be seeing a warning like "Unrecognized escape \d passed through".

Also, be very careful with what $dir contains, and in fact with glob in general, as discussed in the recent thread To glob or not to glob.

* Update: Or rather, how it is working in the context provided, "All the relevant files start with 6 numbers" - thanks for pointing this out, Lotus1!

Replies are listed 'Best First'.
Re^2: Why can't I open a file for writing?
by Lotus1 (Vicar) on Jan 13, 2018 at 16:49 UTC

    Like you said there will be a warning but the pattern will match files. It matches files starting with 'd6' with any number of characters after it. I imagine the next question after fixing the file open issue would have been 'why are only some files being opened?'

    use warnings; use strict; use v5.10; say foreach glob("\d{6}*"); __END__ Unrecognized escape \d passed through at globmeta.pl line 5. d60000000000b.txt d600.txt