Steffen Mueller wrote:
Hi again,

Malcolm Nooning schrieb:
The results are pasted below. pp seems to be handing Zip.pm the wrong $name.

Okay, I did some digging myself. It's the problem reported by Scott Gifford back in October. David Romano supplied a patch to PAR::Packer that fixes this, but I couldn't apply it fully because I felt it didn't actually address the bug but just band-aid it in the wrong place.

It's that pp itself is getting bad paths from Module::ScanDeps. So the right place to hook into for debugging would be around line 735 of (SVN) PAR::Packer. Right after the following call:

    $scan_dispatch->(
        rv      => \%map,
        files   => [EMAIL PROTECTED],
        execute => $opt->{x},
        compile => $opt->{c},
        skip    => \%skip,
        ($opt->{n}) ? () : (
            recurse => 1,
            first   => 1,
        ),
    );

This runs Module::ScanDeps' scan_deps_runtime() and populates %map. Please dump %map to see where there are problematic entries. With that information, it should be easier to delve into the M::SD code and see where it's coming from.

Thanks!

Steffen

I hope this helps.  Any other suggestions?

---------------paste Packer.pm code
    $scan_dispatch->(
        rv      => \%map,
        files   => [EMAIL PROTECTED],
        execute => $opt->{x},
        compile => $opt->{c},
        skip    => \%skip,
        ($opt->{n}) ? () : (
            recurse => 1,
            first   => 1,
        ),
    );
    {
      my ($x1key, $x1val);
      my ($x2key, $x2val);
      my ($x3item);
      while ( ($x1key, $x1val) = each (%map) ) {
        print("_" x 30, "\n");
        print ("x1key is $x1key\n");
          while ( ($x2key, $x2val) = each (%$x1val) ) {
            print ("x2key is $x2key\n");
            if (ref($x2val) eq "ARRAY") {
              if (@$x2val == 0) {
                print ("x2val is an empty array\n");
              } else {
                foreach $x3item (@$x2val) {
                  print ("\t\t$x3item\n");
                }
              }
            } else {
              print ("\tx2val is $x2val\n");
            }
          }
        print("_" x 30, "\n");
      }
    }

---------------end paste Packer.pm code

------------paste results
C:\aaa>pp -c hello.pl
Set up gcc environment - 3.4.2 (mingw-special)
______________________________
x1key is C:/perl/site/lib/sitecustomize.pl
x2key is used_by
x2val is an empty array
x2key is file
        x2val is C:/perl/site/lib/sitecustomize.pl
x2key is type
        x2val is data
x2key is key
        x2val is C:/perl/site/lib/sitecustomize.pl
______________________________

------------end paste results

What can I do next?

Reply via email to