Confirmed, gnuwin32 provides a dir.EXE, where as dir is a cmd.exe/command.com built-in
$ set IPCRUN3DEBUG=999
$ perl -MIPC::Run3 -e "run3 [qw! C:/PROGRA~1/gnuwin32/bin/dir.EXE /b /
+s /a-d | cat !], undef,\*STDOUT,\*STDERR"
run3(): running 'C:/PROGRA~1/gnuwin32/bin/dir.EXE' '/b' '/s' '/a-d' '|
+' 'cat'
run3(): redirecting stdout to filehandle 'GLOB(0x9ba4ec)'
binmode STDOUT, :crlf
run3(): redirecting stderr to filehandle 'GLOB(0x9ba52c)'
binmode STDERR, :crlf
C:/PROGRA~1/gnuwin32/bin/dir.EXE: /b: No such file or directory
C:/PROGRA~1/gnuwin32/bin/dir.EXE: /s: No such file or directory
C:/PROGRA~1/gnuwin32/bin/dir.EXE: /a-d: No such file or directory
C:/PROGRA~1/gnuwin32/bin/dir.EXE: |: Invalid argument
C:/PROGRA~1/gnuwin32/bin/dir.EXE: cat: No such file or directory
run3(): $? is 512