use strict; use warnings; my $String = "This is line 1 This is Line 2 This is Line 3 This is Line 4 This is Line 5 This is Line 6 This is Line 7 This is Line 8 This is Line 9 This is Line 10"; print "Last [ 5] Lines.[\n" . Last_N_Lines($String, 5) . "]\n\n"; print "Last [12] Lines.[\n" . Last_N_Lines($String, 12) . "]\n"; sub Last_N_Lines { my ($String, $N) = @_; my $count = ($String =~ tr/\n//); return $String if $count < $N; my @Lines = (reverse split /\n/, $String)[0..$N-1]; return (join "\n", reverse @Lines); } __END__ Last [ 5] Lines.[ This is Line 6 This is Line 7 This is Line 8 This is Line 9 This is Line 10] Last [12] Lines.[ This is line 1 This is Line 2 This is Line 3 This is Line 4 This is Line 5 This is Line 6 This is Line 7 This is Line 8 This is Line 9 This is Line 10]