in reply to How to open a pipe from CMD if CMD has quotes?

What makes you think it "fails to pass"? Works fine for me.

Makefile:

all: echo NODEBUG=$(NODEBUG) echo ADDED_CFLAGS=$(ADDED_CFLAGS)

655027.pl:

my $cmd = q|nmake /s NODEBUG=1 "ADDED_CFLAGS=/DCOST_EN_US /DPAYMENT_CR +EDIT_CARD"|; open(my $fr_nmake, '-|', "$cmd 2>&1") or die; print <$fr_nmake>; close($fr_nmake);

Output:

>perl 655027.pl Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. NODEBUG=1 ADDED_CFLAGS=/DCOST_EN_US /DPAYMENT_CREDIT_CARD

On a non-Windows system, you'd do:

my @cmd = ('nmake', '/s', 'NODEBUG=1', 'ADDED_CFLAGS=/DCOST_EN_US /DPA +YMENT_CREDIT_CARD'); my $cmd = join ' ', map quotemeta, @cmd; open(my $fr_nmake, '-|', "$cmd 2>&1") or die; print <$fr_nmake>; close($fr_nmake);