in reply to Perl Cross References

I'm 75% sure you have another B.pm somewhere in your @INC that clashes with one in perl distribution!

(I had similar failings recently and that was a reason in my case)

To check my idea, what perl -MO=Xref -we 1 outputs? If it is good. then my assumption is wrong. In that case there should be something special with your elric. If that is the case, could you post then a place in 'elric' that causes such behaviour?

Courage, the Cowardly Dog.
PS. Something fishy is going on there, or my name is Vadim Konovalov. And it's not.

Replies are listed 'Best First'.
Re: Re: Perl Cross References
by PetaMem (Priest) on Jun 04, 2002 at 17:32 UTC
    Hi,

    it's the 25% that bite us (both):

    rj@pollux:~/_ELRIC/implementation/src/examples> perl -MO=Xref -we 1 File -e Subroutine (definitions) Package UNIVERSAL &VERSION s0 &can s0 &isa s0 Package attributes &bootstrap s0 -e syntax OK
    and - btw. B::XRef works "good" for all smaller scripts I call it on as long as they aren't complicated and ~ 50 lines of code not more. Even then:
    Use of uninitialized value in string eq at /usr/lib/perl5/5.6.1/i586-l +inux/B/Xref.pm line 117. Use of uninitialized value in substitution (s///) at /usr/lib/perl5/5. +6.1/i586-linux/B/Xref.pm line 124. Use of uninitialized value in string eq at /usr/lib/perl5/5.6.1/i586-l +inux/B/Xref.pm line 117. Use of uninitialized value in substitution (s///) at /usr/lib/perl5/5. +6.1/i586-linux/B/Xref.pm line 124. Use of uninitialized value in concatenation (.) or string at /usr/lib/ +perl5/5.6.1/i586-linux/B/Xref.pm line 130. Use of uninitialized value in string eq at /usr/lib/perl5/5.6.1/i586-l +inux/B/Xref.pm line 117. etc. etc. (cut for node readability) Use of uninitialized value in substitution (s///) at /usr/lib/perl5/5. +6.1/i586-linux/B/Xref.pm line 124. Use of uninitialized value in concatenation (.) or string at /usr/lib/ +perl5/5.6.1/i586-linux/B/Xref.pm line 130. Use of uninitialized value in concatenation (.) or string at /usr/lib/ +perl5/5.6.1/i586-linux/B/Xref.pm line 130.
    Ugly isn't it? But after that the references spill out. So one must say: unusable for larger projects. Who needs cross references on small scripts???

    Update:

    I thought B::Xref spills out human readable output by default (no params).. :-) Is this considered human readable?

    Subroutine deflate Package (lexical) $$eref 51 $@$$eref 56 $@$@$$eref 60 $@$@$@$$eref 65 $@$@$@$@$$eref 70 $eref i50, 51 $i i55, 56, 59, 59, 55, 70, 71 $inner i60, 62, 63, 64, 55, 69 $j i59, 60, 65, 66, 67, 59 $key i49 $outer i56, 62, 63, 64, 55, 69 $size i51, 66, 59, 55, 71 @$$eref 51, 56 @$@$$eref 56, 60 @$@$@$$eref 60, 65 @$@$@$@$$eref 65, 70 @$@$@$@$@$$eref 70 Package main @_ 49, 50

    Bye
     PetaMem

    Edit by tye to change PRE tags to CODE tags

      You're right, things are worse than I thought. And yes, cross-referencing usage starts from large ammount of code.

      Anyway, did you tried latest perl (5.8.0-RC1)?
      Just curious.
      Also, thank you for your experience, with your help I will be careful when will be planning using any compiler stuff.

      Courage, the Cowardly Dog.
      PS. Something fishy is going on there, or my name is Vadim Konovalov. And it's not.