local $^I = '~'; local @ARGV = __FILE__; my $seen_data; while (<>) { if (!$seen_data) { $seen_data = $_ eq qq{__END__\n}; next; } ... change $_ as desired ... } continue { print; }