[vox-tech] quoting question in perl

Ted Deppner vox-tech@lists.lugod.org
Thu, 20 Dec 2001 18:15:01 -0800


On Thu, Dec 20, 2001 at 05:59:00PM -0800, Peter Jay Salzman wrote:
> >   system("rm '$filename'");
> > or something similar so that the shell sees the quoting.
>  
> cool.  i didn't know that the shell would see $filename when it's enclosed in
> single forward quotes.

perl will expand the $filename itself, and pass the ' on to the shell.
Perl will literally call:
        /bin/sh -c "rm 'a file'"

If you did the array call, perl would call exec instead directly
        exec("rm","a file")

Note that the first way, you get shell interpretation, but w/ the second
call type, perl will try to use exec() unless it sees shell meta
characters, in which case it will revert to a shell call (usually).  I
believe this is gone over in detail -- well, crap, just later in that
perldoc -f system entry...  heh

If you did system('rm $filename'), which is "string literal quoting",
you'd get $filename seen by the shell.

-- 
Ted Deppner
http://www.psyber.com/~ted/