The output roughly means the following:
---
<filename>:
<subname>:
called from: <filename>:<subname>: <this many times>
The reason you're seeing odd results is a limitation of static analysis.
If you have two packages with identically named methods, then their usage gets lumped together. That is,
One->new and
Two->new are grouped, and count as two calls to
new.
# file Classone.pm
package Classone;
sub new { }
1;
# file Classtwo.pm
package Classtwo;
sub new { }
sub a_method {
Classone->new;
Classtwo->new;
}
1;
Those two files result in:
Classone.pm:
new:
Classtwo.pm:a_method: 2
Classtwo.pm:
a_method: {}
new:
Classtwo.pm:a_method: 2
I don't think you can get meaningful results unless you have an interactive environment -- like Squeak -- that can track the class of the invocant. Still, this is a nice approximation. As long as you keep the limitations in mind, it can be quite useful.