zsh-users
 help / color / mirror / code / Atom feed
From: Peter Stephenson <p.stephenson@samsung.com>
To: <zsh-users@zsh.org>
Subject: Re: Questions from zshexpn(1) -- Globbing
Date: Tue, 19 Nov 2019 09:35:03 +0000	[thread overview]
Message-ID: <1574156103.6021.2.camel@samsung.com> (raw)
In-Reply-To: <F1AE3C36-D2A2-4F76-9B02-E92B8AAE4FA9@easesoftware.com>

On Mon, 2019-11-18 at 18:53 -0600, Perry Smith wrote:
> The subsection is Globbing Flags within Filename Generation with both
> the b and m flags is a curious phrase:
>
>> Activate backreferences for parenthesised groups in the pattern;
>> this does not work in filename generation. 
> Why does it say “this does not work in filename generation” ?  Using
> their example for the m flag: 
> 
>>           arr=(veldt jynx grimps waqf zho buck)
>>           print ${arr//(#m)[aeiou]/${(U)MATCH}}
> I can change the “print” to “touch” and it touches the files and
> change it to “rm” and it removes the files. 
> 
> My fear here is that I’m missing something rather significant such as
> what precisely is “filename generation”

You're using that feature in variable substitution, not filename
generation.

Filename generation is specifically the use of pattern characters *, ?,
etc. to generate file names.  So what this means is that the patterns
generated by that method aren't available for use in what I called
backreferences (that's a bad name, sorry: when used in regular
expressions, its standard meaning is references back to a previous part
of the same pattern, which isn't what's happening here).

So if instead of using the array you matched the files directly,
having created them:

    touch $arr
    print (#m)*([aeiou])*

you'd have no way of using the references generated because the file
names are substituted before the $MATCH variable would be available ---
which is probably obvious.

Of course, even if you needed to match the files on the disk first you
could still do

    arr=(*)
    print ${arr//(#m)[aeiou]/${(U)MATCH}}

so you've still got the ability to change the file names with variable
substitution.

So this is probably saying less than you think it is.

pws


      reply	other threads:[~2019-11-19  9:35 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20191119005526eucas1p2f346934679a40e37d2424b3ab6df4cbc@eucas1p2.samsung.com>
2019-11-19  0:53 ` Perry Smith
2019-11-19  9:35   ` Peter Stephenson [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1574156103.6021.2.camel@samsung.com \
    --to=p.stephenson@samsung.com \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).