> Due to twisted nature of Tk Module::ScanDeps has some 
> heuristic to deal with it, which appears to give false 
> positive in my case.

And twisted it is: line 626 of Module::ScanDeps

      return $1 if /\b(\w[\w:]*)::\w+\(/;

runs afoul of lines in Tcl/Tk.pm like

    $bot->pack(-side => "bottom", -fill => "x", -expand => 0);
               -command => ['set', '::tk::Priv(button)', "$_"]);

Here it matches "tk::Priv(" (albeit in a string, probably taking it for
a 
fully qualified subroutine call) and goes on looking for a module 
named "tk.pm". Now, on Unix, there's no such thing, but on Windows 
it'll find "Tk.pm" (from the Tk module)...

I see no easy way to prevent this because Module::ScanDeps must 
look into literal strings, otherwise it would not be able to do 
the right for something like

    require "foo.pl";

If you're just trying to pp an application that uses Tcl::Tk you can
stop the inclusion of the "false" tk.pm like so (note the spelling):

pp -o foo.exe -X tk.pm your_program_using_Tcl_Tk.pl

Cheers, Roderich

Reply via email to