#!/usr/bin/perl use warnings; use strict; sub process_column { my ($patient, $column, $fh_out) = @_; if ($column =~ m/\[R\]/) { if (my @vars = $column =~ m/\](.*?)\[/g) { for my $var (@vars) { if ($var !~ /^\s+$/g) { print {$fh_out} "$patient || $var\n"; } } } } } open my $OUTFILE, '<', 'C:/Scripts/TEST/History21.txt' or die "Could not open source file. $!"; open my $NEW_MED, '>', 'C:/Scripts/TEST/History_MED1.txt' or die "Could not open target file. $!"; open my $NEW_SUR, '>', 'C:/Scripts/TEST/History_SUR1.txt' or die "Could not open target file. $!"; my $count = 1; while (my $line = <$OUTFILE>) { my @rows = split /\|\|/, $line; process_column($rows[0], $rows[1], $NEW_MED); process_column($rows[0], $rows[2], $NEW_SUR); $count++; } close $NEW_SUR or die "Cannot close target file: $!"; close $NEW_MED or die "Cannot close target file: $!"; print "COUNT: $count\n";