# -*- Perl -*-
use strict;
use warnings;
package PerlIO::via::MyHeader;
our $VERSION = '0.01';
use Carp ();
sub PUSHED {
my ($class,$mode)=@_;
Carp::croak __PACKAGE__, " can be used only for writing to file."
unless $mode =~ /w/;
bless \(my $x), $class;
}
my %done;
sub WRITE {
my ($obj,$buf,$fh)=@_;
print $fh ($done{$obj}++ ? '' : <<' HEADER'), $buf;
START_OF_FILE
DATEFORMAT=YYYYMMDD
DECIMALSEPARATOR=.
HEADER
}
1;
__END__
####
#!/usr/bin/perl
use strict;
use warnings;
use lib '.';
use PerlIO::via::MyHeader;
open my $fh1, '>:via(MyHeader)', "test1" or
die "Can't open 'test1': $!\n";
open my $fh2, '>:via(MyHeader)', "test2" or
die "Can't open 'test2': $!\n";
print $fh1 "foo\n";
print $fh1 "bar\n";
print $fh2 "foo\n";
print $fh2 "bar\n";
__END__
####
C:\temp>perl testmh.pl
C:\temp>diff test1 test2
C:\temp>cat test1
START_OF_FILE
DATEFORMAT=YYYYMMDD
DECIMALSEPARATOR=.
foo
bar