my @buffer;
while (<>) {
push @buffer, $_ if $_;
print splice @buffer, 0;
}

こんなかんじ?