Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much

Re: [Win32] Escaping quotes in perl one liner

by Corion (Pope)
on Nov 28, 2020 at 06:57 UTC ( #11124306=note: print w/replies, xml ) Need Help??

in reply to [Win32] Escaping quotes in perl one liner

cmd.exe escapes double-quotes by doubling them:

perl -le "open(my $x, "">&STDOUT"");"

But usually, I prefer (for this reason) to rewrite oneliners using qq() and q(), which eliminates the need for knowing how to escape in this shell besides needing to know whether to use single or double quotes.

Replies are listed 'Best First'.
Re^2: [Win32] Escaping quotes in perl one liner
by syphilis (Bishop) on Nov 28, 2020 at 08:30 UTC
    perl -le "open(my $x, "">&STDOUT"");"

    Not quite - but close enough ;-)
    Thank you.
    Either of the following work and, AFAICT, are equivalent - though I'm not exactly sure why that equivalence should hold:
    perl -le "open(my $x, \"">&STDOUT"\");" perl -le "open(my $x, "\">&STDOUT\"");"
    So I gather it's just the way the shell functions (as opposed to an issue with perl), that I can do:
    C:\_32>perl -Mstrict -MDevel::Peek -le "my $arg = \"STDOUT\"; Dump $ar +g;" SV = PV(0x36cd1c) at 0x44b124 REFCNT = 1 FLAGS = (POK,IsCOW,pPOK) PV = 0x451dc4 "STDOUT"\0 CUR = 6 LEN = 10 COW_REFCNT = 1
    but it blows up as soon as I introduce shell metacharacters into the string:
    C:\_32>perl -Mstrict -MDevel::Peek -le "my $arg = \">&STDOUT\"; Dump $ +arg;" >& was unexpected at this time.
    And I guess the additional quotes provide the disambiguation required to allow the one-liner to DWIM.


Log In?

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (3)
As of 2021-01-17 00:37 GMT
Find Nodes?
    Voting Booth?