in reply to Array Exact Position Filter

if the code finds that $NumProc String exists at the exact same position in the next line it would wipe out the next line, keeping only the first line found.

Taking you at your word, here's an SSCCE:

use strict; use warnings; use Test::More tests => 1; my @in = split (/\n/, <<EOT); aaa Foo: 1234 xyz bbb Foo: 1234 yzx ccc Foo: 1234 yxz ddd Foo: 2345 zyx EOT my @want = split (/\n/, <<EOT); aaa Foo: 1234 xyz ddd Foo: 2345 zyx EOT my $number; my $index; my %seen; my @out; for my $line (@in) { if ($line =~ /Foo: ([\d]{4})/) { $number = $1; $index = index ($number, $line); } else { $number = ''; $index = -1; } push @out, $line unless $number ne '' && $seen{$number}++ && index + ($number, $line) == $index; } is_deeply (\@out, \@want);

There's a good few assumptions in there and I've entirely ignored that your data looks like XML (which, if it is, is probably a better route for your specific needs) but it should give you an idea of one way you might proceed.