use strict; use warnings; my @string = ('String A', 'String B', 'String C', 'String D', 'String E'); my @logfile = ('A.log', 'B.log', 'C.log', 'D.log', 'E.log'); my @logfh; open (IN, '<', 'input.txt') or die "Couldn't open input file!\n"; for my $i (0..$#logfile) { open ($logfh[$i], '>', $logfile[$i]) or die "Couldn't create logfile!\n"; } local $/ = ''; while (my $paragraph = ) { for my $i (0..$#string) { if ( index($paragraph, $string[$i]) >= 0) { print {$logfh[$i]} $paragraph; } } } close IN; foreach my $fh (@logfh) { close $fh; }