Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^3: system() implementation on Windows (again)

by Anonymous Monk
on Aug 19, 2011 at 14:18 UTC ( #921253=note: print w/ replies, xml ) Need Help??


in reply to Re^2: system() implementation on Windows (again)
in thread system() implementation on Windows (again)

See exec always invokes the shell? win32, the situation is brainfuck-cubed

The way I get around it, is to always pretend like I'm typing in cmd.exe

#!/usr/bin/perl -- use strict; use warnings; if( @ARGV ){ print join "\n", map({"( $_ )"} @ARGV), "\n"; } else { my $txt = '/w my > text >= [with] \ symbols " /wabc/def (xyz)'; my( @args ) = win32_quote( 'perl', __FILE__, $txt, 'ARG2', ); print "YOU CAN TYPE THIS AT THE cmd.exe PROMPT\n @args\n\n"; ## command.com doesn't like it (it wants "perl" to be perl) ## i don't know what powershell does :) system @args; } sub win32_quote { my( @args ) = @_; s~ ( [%><|&^"] ) ~ { '%' => '^%', '>' => '^>', '<' => '^<', '"' => '\\"', '&' => '^&', '|' => '^|', }->{$1} ~gex for @args; $_=qq["$_"] for @args; return @args; } __END__ D:\>perl win32.quote.pl YOU CAN TYPE THIS AT THE cmd.exe PROMPT "perl" "win32.quote.pl" "/w my ^> text ^>= [with] \ symbols \" /wab +c/def (xyz)" "ARG2" ( /w my ^> text ^>= [with] \ symbols " /wabc/def (xyz) ) ( ARG2 ) D:\>"perl" "win32.quote.pl" "/w my ^> text ^>= [with] \ symbols \" /wa +bc/def (xyz)" "ARG2" ( /w my ^> text ^>= [with] \ symbols " /wabc/def (xyz) ) ( ARG2 )


Comment on Re^3: system() implementation on Windows (again)
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://921253]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (6)
As of 2014-10-24 23:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (138 votes), past polls