Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

file globbing heck

by chinman (Monk)
on May 03, 2002 at 20:43 UTC ( #163900=perlquestion: print w/replies, xml ) Need Help??

chinman has asked for the wisdom of the Perl Monks concerning the following question:

Greetings Monkdom,

I'm running into some weirdness when trying to glob files when the directory name has spaces. This is on Win NT or 2000 running 5.6.1 build 631.

## case 1, with spaces in dir name my $dir = 'C:/foo/bar baz/'; ## this works ok my @xlfiles = <"$dir*.xls">; ## case 2, no spaces in dir name $dir = 'C:/foo/bar_baz/'; ## this does not work... @xlfiles = <"$dir*.xls">; ## but this does... @xlfiles = <$dir*.xls>;
So my question is, what is the proper way to glob assuming that you may or may not have spaces in a directory file name? I've also tried all combinations of the glob operator with no luck...

glob("$dir*.xls") acts like <$dir*.xls>

Currently, I test for the presence of spaces and select the format that works with either case 1 or case 2, like this...
if ( "$dir" =~ /.*\s+.*/ ) { @xlfiles = <"$dir*.xls">; } else { @xlfiles = <$dir*.xls>; }
but this seems kind of Harkonian. Any suggestions?

Regards, chinman

Replies are listed 'Best First'.
Re: file globbing heck
by belg4mit (Prior) on May 03, 2002 at 20:58 UTC
    I'd chdir first and avoid the whole problem. It also gets you a smaller result set back.

    I'd also use glob, because it's prettier.

    perl -pew "s/\b;([mnst])/'$1/g"

Re: file globbing heck
by Fastolfe (Vicar) on May 04, 2002 at 17:02 UTC
    Escape your spaces with a backslash (s/\s/\\ /g should do it).
    $dir = 'c:/some/directory\ with\ spaces'; @xlfiles = glob("$dir/*.xls");

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://163900]
Approved by belg4mit
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2022-08-09 22:47 GMT
Find Nodes?
    Voting Booth?

    No recent polls found