in reply to Re^3: This can't happen, can it?
in thread This can't happen, can it?

Thank you Corion, that was very helpful. In the meantime I have also discovered the source of my confusion. I made the (wrong) assumption that simply saying
our @EXPORT = qw(function);
means that Spiffy would export function into package two. Actually what I need to do is declare that package one is the base class package two, like this:
use one -base;
The problem is that package two lives in the same file as package one, and this causes a compiler error. The whole thing can be resolved by adding:
import one;
after the
@two::ISA = qw(one);
Thus the final program, and its output is:
#!/usr/bin/perl package one; use Class::Spiffy -base; our @EXPORT = qw(function); sub function { print "Function in package one\n" } package two; @two::ISA = qw(one); import one; print STDERR "Class::Spiffy version is ", $Class::Spiffy::VERSION, "\n +"; print STDERR "Can two function? ",two->can('function'), "\n"; function(); __END__ cd /home/henry/dev/ /usr/bin/perl -w /home/henry/dev/spiffy_bug.pl Class::Spiffy version is 0.15 Can two function? CODE(0x814b738) Function in package one Compilation finished at Tue Feb 21 10:37:35

Thanks to all who have tried to be helpful in solving this mystery.
Best wishes,
Henry Laxen