I have a machine with Windows 10 64-bit 1803, ActivePerl* 5.24.3, and ActiveTcl 8.6.7.

*(Uses dmake and doesn't have gnu make. I'm not constrained to ActivePerl; I just didn't know about Strawberry until recently.)

I tried installing Tcl.pm 1.25 from cpanm as well as running the latest tcl.pm/Makefile.PL on git, but get errors:

> error starting tclsh: $?=-1; $!=Inappropriate I/O control operation
> error writing "stdout": broken pipe
>     while executing
> "puts "tclsh=[info nameofexecutable]""
>     (file "tclcfg.tcl" line 1)

I.e. from the first error it appears to be dying at line 115:

    _die "error starting $tclsh: \$?=$?; \$!=$!\n" if $?!=0;

and the second error is just stderr from tclsh (complaining it couldn't write to stdout because Perl died)…


But running `tclsh tclcfg.tcl` both manually and from Perl seems to give the correct output. In fact if I comment out line 115 (`_die … if $?!=0`), then the tclsh output gets put in $tclcfg, and Makefile.PL seems to finish as expected.


I'm not sure what's wrong here. The only thing that seems strange to me is that $?=-1 for opening a command pipe on Windows (I can get $?=-1 for something like `open(my $fh, "echo hello |")`) but not on other OSes (e.g. macOS, where $?=0 when open() works). I have not found if/where this is explained in `perldoc open` or `perldoc perlipc`.

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

Reply via email to