# -*- 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