use strict; use warnings; use File::Basename; use IO::File; my $iam = basename $0; (my $fname = shift) or die "syntax: $iam \n"; my $fh = new IO::File($fname) or die "$iam: can't read $fname ($!)\n"; my $b_prev_blank = 0; # Nonzero each time the previous line was blank my $b_this_blank = 0; # Nonzero each time the current line is blank while (my $line = <$fh>) { chomp $line; $b_this_blank = ($line =~ /^\s*$/); (!$b_prev_blank or !$b_this_blank) and printf "%s\n", $line; $b_prev_blank = $b_this_blank; }