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
In reply to getting shell expansion to work by perl-diddler
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |