http://www.perlmonks.org?node_id=1199197


in reply to Having to manually escape quote character in args to "system"?

But on Windows (no test for single quote, because irrelevant and works OK):
>perl -E "system $^X, '-E', 'say for @ARGV', 1, qq(\x22), 2" 1 2
Tracing the script with Process Monitor shows that the system call becomes...
C:\Strawberry\perl\bin\perl.exe -E "say for @ARGV" 1 " 2
It seems that multi-arg system doesn't quote arguments that already have quotes... maybe some poor application of DWIM principles or a work-around for keeping compatibility with old scripts written before the automating quoting was introduced.