On 02/04/2011 10:33 AM, mathew wrote: > On Thu, Feb 3, 2011 at 22:29, Jeremy Bopp <jeremy / bopp.net> wrote: >> Globs aren't implemented by the OS or the filesystem. > > Wrong. > > % man -s3 glob > > GLOB(3) Linux Programmer's Manual GLOB(3) > > NAME > glob, globfree - find pathnames matching a pattern, free memory from > glob() > > SYNOPSIS > #include <glob.h> > > int glob(const char *pattern, int flags, > int (*errfunc) (const char *epath, int eerrno), > glob_t *pglob); > void globfree(glob_t *pglob); > [...] That implementation is provided by libc: $ dpkg -S glob.h libc6-dev: /usr/include/glob.h As a result, we are free to ignore it, and in fact Ruby must ignore it because Ruby has some extensions not supported by this function. We don't have such an option when it comes to the case-sensitivity of filesystems. Feel free to try to prove me wrong on that point though. > And on Windows: > http://msdn.microsoft.com/en-us/library/8bch7bkk.aspx The same is true on Windows. The implementation of glob functionality is something that the programming environment is able to ignore simply by implementing its own. Furthermore, what you linked does not appear to be a generic globbing function. I think it will only work for expanding program arguments, so you probably can't use it within your program to scan directory contents using a glob. The question that the Ruby community has to answer is how it wants to handle something like globbing where canonical tools included with one platform behave differently than equivalent tools on another one do. My argument is that where possible, such as with globbing, Ruby should pick a single implementation to be the default on all platforms. It doesn't matter what the default is as long as it's functional and as consistently implemented as possible on the platform. This aids writing cross platform scripts since there are fewer gotchyas when porting the scripts. If Ruby chose instead to implement platform specific quirks by default, the script writer would have yet another set of things for which he/she must account during development and testing. Now, if there was enough desire, it should be possible to implement platform-specific quirks; however, their use should be completely optional and never the default. -Jeremy