#!/usr/bin/perl -w use strict; my $ifile = shift || die "No filename provided\n"; open IFILE, '<', "$ifile" || die "Couldn't open file: $!"; open OFILE, '+>', 'new-data' || die "Couldn't open outfile: $!"; chomp(my @lines = ); close IFILE; my @matches = map { /^@.*mail(\d+).*\z/? $1 <= 8? $1: ( ): $_ } @lines; map { print OFILE "$_\n" } @matches; close OFILE;