The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package
  Include ;
 
use Filter::Util::Call ;
use IO::File ;
use Carp ;
 
sub import
{
    my ($self) = shift ;
    my ($filename) = shift ;
    my $fh = new IO::File "<$filename" 
	or croak "Cannot open file '$filename': $!" ;

    my $first_time = 1 ;
    my ($orig_filename, $orig_line) = (caller)[1,2] ;
    ++ $orig_line ;

    filter_add(
	sub 
	{
	    $_ = <$fh> ;

	    if ($first_time) {
	        $_ = "#line 1 $filename\n$_"  ;
	        $first_time = 0 ;
	    }

	    if ($fh->eof) {
	        $fh->close ;
		$_ .= "#line $orig_line $orig_filename\n" ;
	        filter_del() ;
	    }
	    1 ;
	}) 
}
 
1 ;