Alan_C wrote:
>
> Hi.
Hello,
> Thanks for the help. I've got a (Linux platform) working solution with
> the improvements that I mentioned are onto it.
>
> When searching (enter on commandline) multiple words it can print out several
> listings of the same xtst file due to I use some cross referencing of my
> keywords in the xtst files. I'd like for it to not list out a particular
> xtst file more than once -- will see what I can do on this.
This may be close to what you want:
#!/usr/bin/perl -w
use strict;
my @search4 = @ARGV; # keywords
@ARGV = glob 'xtst*';
my @lines;
while ( <> ) {
if ( s/^#:// ) {
push @lines, [ $ARGV, split ];
}
# quit looking when we reach the ninth line
close ARGV if $. == 9;
}
my %data;
for my $keyline ( @lines ) {
my $filename = shift @$keyline;
for my $search ( @search4 ) {
for ( @$keyline ) {
if ( /$search/ ) {
push @{ $data{ $filename } }, $_;
}
}
}
}
my @foundin = sort keys %data;
my $found_tally = 0;
for my $filename ( @foundin ) {
for ( $data{ $filename } ) {
$_ = join "\0and\0", @$_;
s/\0and\0(?=.*\0and\0)/, /g;
s/\0and\0/ and /;
print ++$found_tally, " '$_' found in: $filename\n\n";
}
}
print "wherefound '@foundin'\n\n";
print "enter a digit: ";
my $d = <STDIN> - 1;
print "$foundin[$d]\n";
open my $fh, $foundin[ $d ] or die "Cannot open '$foundin[$d]' $!";
print while <$fh>;
__END__
John
--
use Perl;
program
fulfillment
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>