#! /usr/bin/perl -w use strict; use warnings; use Data::Dumper ; my $source = shift ; my $lines_per_file = shift ; open (my $FH, "<$source") or die "Could not open source file. $!"; open (my $OUT, '>', '00000000.log') or die "Could not open destination file. $!"; my $i = 0; my $index_last = 0 ; my $index_current = 0; while(my $line = <$FH>) { next unless ($line =~ /mrule/) ; if ($line =~ /mrule=([0-9]+)/){ print $OUT $line; $i++ ; if ($1 != $index_last){ $index_current = $1 ; close($OUT); my $NEW = sprintf("%08d", $index_current); open($OUT, ">${NEW}.log") or die "Could not open destination file. $! " ; } $index_last = $index_current ; } } close($FH); close($OUT);