perl-diddler has asked for the wisdom of the Perl Monks concerning the following question:
This pattern works in bash shell, but seems remarkably resistant to incorporate into perl --
(matches mc-lang-4.6.1-140.x86_64.rpm)echo mc-lang-+([^-])-+([^-])*.rpm<br>
a "previous expression, like
echo mc_lang-4.6.1-140*.rpm works from perl with
$a=`echo mc_lang-4.6.1-140*.rpm`
--if the file isn't there, I get back the "*", (unexpanded),
otherwise, I get:
mc-lang-4.6.1-140.x86_64.rpm
but the top expression, a bit more precise and what I want fails 13 ways from thursday.
Double quotes, single, adding bash -c 'echo...' in the backquotes, extra backslashes in front of the problematic parens. Part of the prob was I needed to set the extglob option (shopt -s extglob; echo <pattern>).
But every type of backslashed sequence either doesn't expand, or comes up completely empty, or errors pop out.
Why can't perl pass a simple shell pattern and have it expanded!
A work-around that I would prefer not to use that I _think_ would work would fork bash as a process with I/O connected to sockets but that seems like pathetic overkill.
Is there something I'm missing in this morass? Or do I have to go search for a module to debug and modify... -- which isn't really much preferable to launching bash as a co-process...?
Thanks, Linda
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: getting shell expansion to work
by Corion (Patriarch) on Dec 27, 2007 at 09:29 UTC | |
by FunkyMonk (Bishop) on Dec 28, 2007 at 00:33 UTC | |
by eserte (Deacon) on Dec 28, 2007 at 00:53 UTC | |
by Corion (Patriarch) on Dec 28, 2007 at 08:22 UTC | |
by perl-diddler (Chaplain) on Dec 27, 2007 at 20:50 UTC | |
by Corion (Patriarch) on Dec 27, 2007 at 22:20 UTC | |
by perl-diddler (Chaplain) on Dec 28, 2007 at 19:36 UTC | |
|
Re: getting shell expansion to work
by eserte (Deacon) on Dec 27, 2007 at 10:08 UTC | |
by perl-diddler (Chaplain) on Dec 27, 2007 at 20:24 UTC | |
by almut (Canon) on Dec 27, 2007 at 23:53 UTC | |
by perl-diddler (Chaplain) on Dec 28, 2007 at 20:58 UTC |