Geoffrey Young wrote:

Joe Orton wrote:

Does the quote escaping really work in this function?


hmm, it doesn't look like it does.  I think this was part of some work that
stas and ken were doing, though, and IIRC it was some win32 command line
thing.  but I could be wrong.


It confuses emacs
font-lock mode which doesn't see a closing quote so thinks the rest of
the file is part of the string.  This fixes at least the latter:


-    $arg =~ s/"/\"/g;
+    $arg =~ s/"/\\"/g;


that looks better, but I'm not sure it's right either - if the input is
already escaped then you've (both) over-quoted (if the first worked at all,
that is :)  so, you look to be fine here if pre-quoted input is forbidden or
not expected, but not so if it's already quoted, in which case something
like this is better:

  $arg =~ s!([^\\])"!$1\\"!g;

the attached script runs through a few different regex and input
combinations for visual inspection.  hopefully that will help sort this
issue out a bit (or the original author will clear things up ;)

Yeah, I guess it's the best to ask Ken, it worked for him.

Jon's looks better, and Geoff's is even better,

I've checked CPAN and found
http://search.cpan.org/src/ROSCH/String-ShellQuote-1.00/ShellQuote.pm
but it probably is not what you are after, right?

Either way +1 to Geoff's version.

and here is the optimized version of Geoff's one:

sub shell_ready_stas {
    my $arg = shift;
    $arg =~ s!\\?"!\\"!g;
    return qq["$arg"];
}

:)

--
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

Reply via email to