On Wed, 2004-02-25 at 18:58, [EMAIL PROTECTED] wrote:
> Some further information...
>
> The error I get is:
> Can't locate object method "postorder" via package "Graph::DFS" at
> Graph/Base.pm line 1629.
...
> Am I doing something wrong?
No, it's actually a buglet in the POD of Graph/Traversal.pm,
there's a spurious =cut on line 245. Now pp by default strips all
PODs from modules that it packs (and replaces them with #line
directives). If we extract lib/Graph/Traversal.pm from our pp-packed
executable and compare it to the original, we see
--- lib/Graph/Traversal.pm Thu Aug 19 10:06:42 1999
+++ lib/Graph/Traversal.pm-pp Thu Feb 26 08:54:00 2004
@@ -243,44 +200,21 @@
}
=cut
-=item next_postorder
-
- $v = $S->next_postorder
-
-Returns the next vertex in postorder of the graph
-encapsulated within the search object $S.
-
-=cut
+#line 254
sub next_postorder {
my $S = shift;
Note that the first =cut survived, tricking Perl into effectively
ignoring the rest of the module.
As a workaround, set PAR_VERBATIM=1 in your environment while pp'ing.
This will prevent pp from stripping PODs.
Autrijus,
though this is not PAR's fault, here's a patch for PodStrip.pm
to strip such spurious =cut's:
--- PAR-0.79/lib/PAR/Filter/PodStrip.pm 2004-01-06 22:18:47.000000000
+0100
+++ ./PodStrip.pm 2004-02-26 09:48:43.856000000 +0100
@@ -31,14 +31,14 @@
$data = $1 if $$ref =~ s/((?:^__DATA__$).*)//ms;
my $line = 1;
- if ($$ref =~ /^=(?:head\d|pod|begin|item|over|for|back|end)\b/) {
+ if ($$ref =~ /^=(?:head\d|pod|begin|item|over|for|back|end|cut)\b/)
{
$$ref = "\n$$ref";
$line--;
}
$$ref =~ s{(
(.*?\n)
- =(?:head\d|pod|begin|item|over|for|back|end)\b
- .*?\n
+ (?:=(?:head\d|pod|begin|item|over|for|back|end)\b
+ .*?\n)?
(?:=cut[\t ]*[\r\n]*?|\Z)
(\r?\n)?
)}{
Cheers, Roderich