in reply to Unable to install Tk module for Strawberry Perl

I realize this is an old thread, but I don't feel like you really got an answer and I just ran into this. I'm not sure I have a complete answer, except to say I have successfully installed Strawberry Perl and Perl/Tk on two Windows 10 laptops. Things to note

  1. I used Strawberry Perl 5.32.1 64 bit (as I believe you did). I only mention this because I tried installing Tk with 5.38 and it failed for reasons I am still looking into. I did not try 5.36.
  2. On my Lenovo Helix, 2 out of 4k+ tests failed so I had to actually use the --force option. On my Lenovo W520 (months later) all tests passed.
  3. The one difference I did see between what you did and what I did (unless it was a typo) is that I used cpanm rather than cpan. I can't tell you why I did that. I believe I researched it at the time (having been out of Perl programming for a while) and intentionally chose to use cpanm.
  4. I blogged about it here (https://doersofstuff.org/2023/05/15/picking-perls-in-a-strawberry-patch/) if you want to see the whole thing.

Hopefully that helps you (or anyone else who stumbles onto this). Hopefully I'll get a chance to look into the issue I had 5.38.

  • Comment on Re: Unable to install Tk module for Strawberry Perl

Replies are listed 'Best First'.
Re^2: Unable to install Tk module for Strawberry Perl
by syphilis (Archbishop) on Jan 20, 2024 at 23:55 UTC
      This doesn't help me install Tk under Strawberry Perl 5.38.2. Issuing the command cpan Tk or any other variation thereof, cranks through the usual thousands of lines of incomprehensibility, including some red errors early on, maybe on something named "pmop" or something like that... But the real point of failure is this incomprehensible C compilation error:
      gcc -c -I. -I./pTk/mTk/xlib -I.. -I.. -I../pTk/mTk/xlib -I. -Ibitmaps + -I.. -I../pTk/mTk/xlib -DWIN32 -DWIN64 -DPERL_TEXTMODE_SCRIPTS -DMUL +TIPLICITY -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO - +fwrapv -fno-strict-aliasing -mms-bitfields -DPERLDLL -Os -falign-func +tions -falign-jumps -falign-labels -falign-loops -freorder-blocks -fr +eorder-blocks-algorithm=stc -freorder-blocks-and-partition -DVERSIO +N=\"804.036\" -DXS_VERSION=\"804.036\" "-IC:\STRAWB~1\perl\lib\CORE" + imgBMP.c In file included from ../pTk/mTk/xlib/X11/Xlib.h:31, from tkWinPort.h:19, from tkPort.h:32, from tk.h:87, from imgBMP.c:11: ../pTk/mTk/xlib/X11/X.h:182:34: error: expected identifier or '(' befo +re numeric constant 182 | #define ControlMask (1<<2) | ^
      This is very strange as this is the third successive line of pretty much the same format: "#define _____ (1<<_)" , but the first two lines are apparently acceptable as they stand. The only outstanding difference in this line is that "ControlMask" as a string is long enough that it moves the definition "(1<<2)" to the next tab stop, as compared to the two preceding lines. I also can't reproduce the error in a simple test program that simply does a "#include tk.h".