in reply to Re: getting shell expansion to work
in thread getting shell expansion to work

Sorry, my note got mangled by the perlmonk-text-input text mangler. I didn't know that square brackets were a reserved HTML character that would be deleted...(I managed to put in the paragraph breaks, but then missed the important "tree" (the expression I was focusing on) due to my focus on the forest (all of my text needing formatting to appear the way I wrote it).

I'm sorry you are unclear about where I'm intending shell expansion to occur. I'm hoping, ney, desiring that text expansion occur in my shell, as determined by the "$SHELL" variable . I see that's a mistake -- that perl uses the more predictable "/bin/sh". Attempting to expand my expression in the shell was why I used backquotes. Unfortunately, I forgot that Perl ignores "$SHELL and uses /bin/sh (otherwise it would run differently on each end-user (if there were other users using this code)'s system).

I really should (as you mention) redo the note using code tags to quote things. Le'me rewrite using better text for the input example as well, as the case I selected was poor in that it doesn't show all of my "matching" problems.

Replies are listed 'Best First'.
Re^3: getting shell expansion to work
by Corion (Patriarch) on Dec 27, 2007 at 22:20 UTC

    I guess the simplest way is then to be explicit about what you want to happen, instead of hoping for some magic in Perl that you don't know about:

    my $pattern = 'mc-lang-+([^-])-+([^-])*.rpm'; my $results = `$ENV{SHELL} -c echo $pattern`;

    assuming that by $SHELL you mean the environment variable $SHELL and not the Perl variable $SHELL.

      Yes...specifically, I wanted bash's expansion, so more recent revisions have included deliberate specification using "bash -c". Someone else noted that they got the extended regular expressions to work using the backquote syntax even though perl invokes bash using the "sh" alias. They (and I) both thought that invoking bash with the sh alias might limit bash to 'sh' compatibility mode...but surprise -- it didn't (not that one should rely on such things! :-)...