in reply to Re^3: Need Some help with finding a word in a file
in thread Need Some help with finding a word in a file

Ok, the above code places the entries in an outlog. Here's an example of one of the logs:
cell-tstc-65_DM/userQ cell-tstc-65_DM/userQ node-tstc-65_DM/userF
I need to be able to ignore the blank space, and the duplicate. A blank entry is getting loaded when the authAlias is set to null: ""

Replies are listed 'Best First'.
Re^5: Need Some help with finding a word in a file
by jrsimmon (Hermit) on Nov 29, 2007 at 20:43 UTC
    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.