Ok, so it sounds like you have a single authAlias on any given line, but the same authAlias may be present multiple times in a given file. And you want a list of all the unique authAlias entries within the file. Given that assumption, what you want to do is store each authAlias in a hash within the loop, filtering out any that you're not interested in (either because they've already been found, or because they are not valid). So, with those changes, you end up with:
#!/usr/bin/perl
my $data_file = '/home/resources.xml';
my $data_out = '/home/out.log';
open DATA, "$data_file" or die "can't open $data_file $!";
open DATA_OUT, ">>$data_out";
my @array_of_data = <DATA>;
my %match_hash;
foreach my $line (@array_of_data){
if ($line =~ m/authDataAlias=(.*-.*-.*_DM)/i){
my $match = $1;
unless($match eq ""){
$match_hash{$match} = 1;
print DATA_OUT "$match\n" unless defined $match_hash{$match};
}
}
}
close (DATA);
close (DATA_OUT);
You could also pull the print statement out of the loop, so that you could open your output file, print all your gathered data, and then close your output file.
| [reply] [d/l] |