IPC::Cmd mentions quote differences. Dunno if it would have behave well on Windows before Serguei's patch.

On 2/27/19 5:01 AM, Serguei Trouchelle wrote:
Probably somewhere in MSDN.

The problem is not in Perl, the problem is in Windows command line where single quote is not a quote, and double quote should be doubled (or escaped) to work as people from bash/sh world would expect.

Examples:

C:\>perl -M5.010 -we "say ""a"""
a

C:\>perl -M5.010 -we "say "a""
Unquoted string "a" may clash with future reserved word at -e line 1.
Name "main::a" used only once: possible typo at -e line 1.
say() on unopened filehandle a at -e line 1.

C:\>perl -M5.010 -we 'say "a"'
Can't find string terminator "'" anywhere before EOF at -e line 1.

C:\>perl -M5.010 -we "say \"a\""
a

On 2019-02-26 09:32, Karen Etheridge wrote:
Is there any documentation on that? `perldoc -f system` only describes
the different handling of "system LIST" vs "system PROGRAM LIST" on
windows, not any differences between different types of quote
characters.

On Mon, Feb 25, 2019 at 11:28 PM Serguei Trouchelle <s...@cpan.org> wrote:
On 2019-02-25 05:11, David Cantrell wrote:

I don't need to use Andreas's analysis tool to figure out what the
common factor is in these test failures :-)
    http://cpantesters.org/distro/T/Test-Differences.html

But I don't have access to any Windows machines, or any knowledge of how
to use any of the tools on that platform or how to install stuff. Does
anything exist now like the project a few years ago where Microsoft
donated some cloudy VMs for use by perl people that already had a
sensible toolchain and stuff installed?

I looked into the problem, the issue lies in calling system() with
double quotes. Double quotes on Win32 behave different from Unix-like
systems and should generally be avoided. This diff fixes the problem:

25,26c25,26
<             [        "\\N{U+2603}", "\\N{U+1F4A9}"],
<             [reverse "\\N{U+2603}", "\\N{U+1F4A9}"]
---
  >             [        qq{\\N{U+2603}}, qq{\\N{U+1F4A9}}],
  >             [reverse qq{\\N{U+2603}}, qq{\\N{U+1F4A9}}]


--
S.T.



Reply via email to