This is very neat. I have made a patch (see below) that:
- Makes it ignore POD lines.
- Makes it deal with multi-line @ISA declarations such as:
@ISA=qw(class1
class2);
Of course, the only foolproof way to get @ISA would be to load
the package and examine its value, but this seems to work OK.
For an example of a graph generated by this program, see
this
graph, which corresponds to the implementation of
this project. :-)
--ZZamboni
Here's the patch:
--- ingraph.pl.orig Sun Jun 10 16:52:08 2001
+++ ingraph.pl Sun Jun 10 17:00:00 2001
@@ -86,16 +86,31 @@
STDERR->print("processing $file\n") if $opts{v};
my $f = IO::File->new($file) or warn "can't open $file: $!\n", next;
my ($package, @isa);
+ my $pod=0;
while (<$f>)
{
+ if (/^=cut/) {
+ $pod=0;
+ next;
+ }
+ if (/^=[a-zA-Z]+/) {
+ $pod=1;
+ next;
+ }
+ next if $pod;
if (/^\s*package\s+([[:word:]:]+)\s*;/)
{
$package = $1;
next;
}
- if (/@(?:([[:word:]:]+)::)?ISA\s*=\s*(.*)\s*;/)
+ if (/@(?:([[:word:]:]+)::)?ISA\s*=\s*(.*)\s*/)
{
- @isa = eval $2;
+ my $tmp=$2;
+ while (!/;/) {
+ $_=<$f>;
+ $tmp.=$_;
+ }
+ @isa = eval $tmp;
if ($@) { warn "Unparseable \@ISA line: $_"; next }
$package = $1 if defined($1);
STDERR->print("package=$package, \@ISA=", join(',', @isa), "\n") i
+f $opts{v};
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|