my $filename; # used to remember the current file name my $out = "output"; # prefix for output files my $ofh; # output filehandle, currently closed while (<>) { if ($ARGV ne $filename) { $filename = $ARGV; open $ofh, '>', "$out-$filename" or die "Can't write to '$out-$filename': $!\n"; } print $ofh $_; }