Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: strange glob expansion

"Bart Schaefer" wrote:
> Peter's latest patches to 3.1.6 (zsh-workers 7611 and 7624) cause zsh to
> complain:
> zagzig<8> echo L(*/)#
> zsh: bad pattern: L(*/)#
> Zsh is being very clever here, as it's only a bad pattern in file-globbing
> context, not in string matching context:
> zagzig<9> [[ Lazy//lob/ == L(*/)# ]] && echo ok
> ok

It occurs to me (finally) that maybe this is the best behaviour, since it
actually lets you know that /'s don't work in parentheses for files.  The
documented behaviour (works up to 3.1.6) is that the / is ignored and
parsing continues after the parentheses, but I guess that was simply to
note what was actually happening rather than an endorsement of it (and the
example with the z shows it was rather flakey).  I have no plans to make
/'s work in groups --- that would require large changes to both the pattern
code and the file scanning code in glob.c --- so if there is no objection
I'll just change the documentation for the new pattern matching code to
recognise the behaviour noted by Bart.

> } The upshot of this is that to match all Perl modules starting with `L'
> } below the cwd, I have to use L{*/**/*,}.pm instead of L**/*.pm.
> What?  L{*/**/*,}.pm is first brace-expanded to L*/**/*.pm and L.pm, and
> then globbed.  There probably isn't an L.pm, so that matches in any sub-
> directory whose name starts with L and all its subdirectories, all the
> files whose names end with .pm.  You could have done that without the
> braces, with L*/**/*.pm, but I suspect what you meant was */**/L*.pm.

I think the answer is **/L*.pm --- as remarked by someone a day or two ago,
**/ can match (very usefully, but slightly counterintuitively given the /)
in the current directory too.  For example, in /usr/local/lib/perl5
`ls **/A*.pm' gives me:
  AnyDBM_File.pm   AutoLoader.pm    AutoSplit.pm     Text/Abbrev.pm

Peter Stephenson <pws@xxxxxx>       Tel: +39 050 844536
WWW:  http://www.ifh.de/~pws/
Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy

Messages sorted by: Reverse Date, Date, Thread, Author