while (<>) { my ($prefix, $tail) = /(\S+) (.*)/; print "\n" if $currPrefix && $currPrefix ne $prefix; print "$prefix $tail"; $currPrefix = $prefix; } #### #!/usr/bin/perl use strict; use warnings; my $in = *STDIN; my $out = *STDOUT; if (@ARGV == 2) { open $in, '<', $ARGV[0] or die "Can't open '$ARGV[0]': $!\n"; open $out, '>', $ARGV[1] or die "Can't create '$ARGV[1]': $!\n"; } my $currPrefix; while (<$in>) { my ($prefix, $tail) = /(\S+) (.*)/; print $out "\n" if $currPrefix && $currPrefix ne $prefix; print $out "$prefix $tail"; $currPrefix = $prefix; } #### #!/usr/bin/perl use strict; use warnings; my $currPrefix; $^I = '.bak'; while (<>) { my ($prefix, $tail) = /(\S+) (.*)/; print "\n" if $currPrefix && $currPrefix ne $prefix; print "$prefix $tail"; $currPrefix = $prefix; }