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