Upon reading the documentation for File::Glob I was about to say that I stand corrected, but to be precise, I actually wrote that "This sounds very wrong" (with additional emphasis added now) so I won't, because I still claim that it sounds very wrong. That the actual globbing function's name is bsd_glob() behind the scenes is a matter of fact, but using it explicitly conveys the psychological feeling of resorting to a bsd thingie, whatever it is. The rationale is that perl's glob will dwimmily do whatever is best for the OS one is running under: of course, I acknowledge that there's some sloppiness in this claim since
- even under *NIX different shells may perform different globbing - I'm not really sure: is
there any baseline defined by POSIX?
- under Windows, it's not defined at all, being left to each individual application: in that case I think that the "standard" behaviour could be defined by that of cli utilities that come with the OS itself...
Whatever, if e.g. glob() breaks when a space is present, I would still regard it as a feature: provided that does it conform to the standard behaviour on the given OS. Failure to do so would be definitely considered a bug instead.
| [reply] [d/l] [select] |
provided that does it conform to the standard behaviour on the given OS.
Perl's glob is platform independent. It behaves the same on all platforms.
if e.g. glob() breaks when a space is present
It's done that way to allow glob('*.h *.c'), but I called it broken since patterns are usually already separated into multiple calls to glob. bsd_glob is identical to glob except for the difference in the treatment of spaces.
under Windows, it's not defined at all, being left to each individual application
They usually delegate to the FindFirstFile system call. Perl has File::DosGlob which resembles FindFirstFile.
| [reply] [d/l] [select] |
provided that does it conform to the standard behaviour on the given OS.
Perl's glob is platform independent. It behaves the same on all platforms
I personally believe that it is case sensitive under unices and case insensitive under Windows, for one thing. While I had naively and erroneously assumed this (along with other details!) was implemented with a selective loading of system specific modules, much like File::Spec does, or more simply by inserting the suitable sub out of a set into *CORE::GLOBAL::glob while it is much more simply and reasonably controlled by means of a single variable, I would definitely call that a different behavious across platforms.
It's done that way to allow glob('*.h *.c'), but I called it broken since patterns are usually already separated into multiple calls to glob
Actually, I see your point now, but I wouldn't go as far as calling it broken.
under Windows, it's not defined at all, being left to each individual application
They usually delegate to the FindFirstFile system call. Perl has File::DosGlob which resembles FindFirstFile
Thank you for sharing this, I didn't know.
| [reply] [d/l] [select] |