#!/usr/bin/perl use 5.018; use strict; use warnings; my $header_lines = $ARGV[0] // 0; my $footer_lines = $ARGV[1] // 0; # skip header for 1 .. $header_lines; # print everything but the footer lines my @buffer; while ( my $line = ) { chomp $line; push @buffer, $line; say shift @buffer if scalar @buffer > $footer_lines; } __DATA__ header 01 header 02 line 01 line 02 line 03 line 04 line 05 footer 01 footer 02 footer 03 #### blingy > buffer.pl 2 3 line 01 line 02 line 03 line 04 line 05 blingy > buffer.pl 1 1 header 02 line 01 line 02 line 03 line 04 line 05 footer 01 footer 02 blingy > buffer.pl 2 line 01 line 02 line 03 line 04 line 05 footer 01 footer 02 footer 03 blingy > buffer.pl 0 3 header 01 header 02 line 01 line 02 line 03 line 04 line 05 blingy > buffer.pl header 01 header 02 line 01 line 02 line 03 line 04 line 05 footer 01 footer 02 footer 03