sub flux {
my $class = ref shift;
my $fh = do {
no strict 'refs';
\*{"$class\::DATA"};
};
return "A-flux: " . scalar <$fh>;
}
####
#!/usr/bin/perl
use warnings;
use strict;
use a344569;
use b344569;
my $a = a344569->new();
my $b = b344569->new();
print "A:\n";
print " ", $a->foo();
print " ", $a->flux();
print "B:\n";
print " ", $b->foo();
print " ", $b->bar();
print " ", $b->flux();
print "Ok\n";
##
##
package a344569;
use strict;
sub new {
return bless {}, shift;
}
sub foo {
return "A-foo: " . scalar ;
}
sub flux {
my $class = ref shift;
my $fh = do {
no strict 'refs';
\*{"$class\::DATA"};
};
return "A-flux: " . scalar <$fh>;
}
1;
__DATA__
This is package A
This is package A
This is package A
This is package A
##
##
package b344569;
@ISA = ('a344569');
use strict;
sub bar {
return "B-bar: " . scalar ;
}
1;
__DATA__
This is package B
This is package B
This is package B
This is package B
##
##
[johnsca@cory tmp]$ ./344569.pl
A:
A-foo: This is package A
A-flux: This is package A
B:
A-foo: This is package A
B-bar: This is package B
A-flux: This is package B
Ok