I'm going to go strictly off your description, as what you said you want to print out doesn't seem to match the description as I understand it.
I would just do something like this:
@ACCTS = ("1234", "5678", "6959");
open(IN,"InFile.txt");
%acct="";
while (defined($line = (<IN>))){
foreach $x (@ACCTS) {
if ($line =~/$x/){
#only print the first line we see for each account
unless( exists $acct{$x} ){
print "$line\n";
$acct{$x}++;
}
}
}
}
Or if you need to store all the data for other purposes:
@ACCTS = ("1234", "5678", "6959");
open(IN,"InFile.txt");
%acct="";
while (defined($line = (<IN>))){
foreach $x (@ACCTS) {
if ($line =~/$x/){
push(@{$acct{$x}},$line);
}
}
}
foreach $key (sort keys %acct){
print "$key,$acct{$key}[0]\n";
}