Re: [PATCH] Convert open("-|") to qx{} calls
- From
Randal L. Schwartz <merlyn@stonehenge.com>
- Date
- Feb 23, 2006, 20:41 UTC
- Message-ID
- <86lkw1g647.fsf@blue.stonehenge.com>
- In-Reply-To
- <Pine.LNX.4.63.0602232039160.30630@wbgn013.biozentrum.uni-wuerzburg.de>
>>>>> "Johannes" == Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Johannes> Now that our local Perl guru joined the discussion, may I ask what Johannes> is, and what is not quoted when put inside qx{}?
Nothing is quoted. Your string acts as if it was XXX in:
sh -c 'XXX'
so any quoting is entirely on your own. Thus, without the multi-arg exec in my proposed replacement, you can get shell-ish interactions that can ruin your day pretty bad.
Johannes> I had the Johannes> impression that all arguments are quoted, except that variables are Johannes> resolved first. Was that wrong? IOW does
Johannes> qx{bash $variable}Johannes> quote the value of $variable, or not?
The Perl $variable is expanded to its current contents. But suppose the contents are `date` (including the backquotes). That would mean that a shell would execute a date command, and *its* output would then contribute further to the command invocation.
-- Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095 <merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/> Perl/Unix/security consulting, Technical writing, Comedy, etc. etc. See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!