open (IN, "file1") or die("can't blah blah"); while () { print; print slurp(); } sub slurp { local *IN; my $slurp = do { local $/ = undef; open IN, "file2"; }; return $slurp; }