in reply to Searching for Certain Values

Well, you're in luck. This is the kind of thing that Perl excels at. I don't know what separates the data in the columns, but assuming it's some sort of spacing (or tabs), you could use something like:
# Open the file containing data or abort with error message open(my $fh, "<", "some_file.txt") || die "Can't open file: $!"; # Run through all lines of the file, one by one while(my $line = <$fh>) { # Break up the line on whitespace, assign columns to vars my( $score,$scorePoints, $time,$timePoints, $record,$recordPoints, $size,$sizePoints, $age,$agePoints, $diff,$diffPoints, $size2,$size2Points, $name ) = split(/\s+/,$line,13); # Check to see if name matches if($name =~ /(intrepid|triumph)/) { print "$name\n", "Time: $timePoints, Difficulty: $diffPoints\n\n"; } }
That is, break up the line on spaces, assign each of the columns to variables, then print something if the data matches a test. Since your data is very regular, the code doesn't have to be complicated. You can make some modifications for simplicity:
# Assign only the columns you're interested in my ($timePoints,$diffPoints,$name) = +(split(/\s+/,$line,13))[3,11,1 +4];
Or to eliminate possibly-bogus data:
# Ensure the line consists of 12 integers + something my ( ... ) = ($line =~ /^\s*(?:(\d+)\s*){12}(.*)/);
Or for speed (don't bother splitting lines unless they have intrepid/triumph on them somewhere):
next unless $line =~ /(intrepid|triumph)/; my ( ... ) = ...; print ....;

Replies are listed 'Best First'.
Re^2: Searching for Certain Values
by ikegami (Patriarch) on Jul 30, 2007 at 19:02 UTC
    if($name =~ /(intrepid|triumph)/) {

    Captures are needlessly slow, and you're not actually checking for equality. Better:

    if($name =~ /^(?:intrepid|triumph)\z/) {

    And if you're so worried about speed, I think doing string comparisons would be even faster.

    if($name eq 'intrepid' || $name eq 'triumph') {
Re^2: Searching for Certain Values
by Anonymous Monk on Jul 30, 2007 at 18:14 UTC
    Thanks for the help. I'll try it out and get back to you. It looks like it'll work.

    And the columns are separated in the form " Score | Points | Time | Points | etc." with both spaces and |. What do I have to change to factor in the |?
      Sorry, I wrote that last comment, but I forgot to log in at the time.

        Change split(/\s+/, ...) to split(/\s*\|\s*/, ...).

        By the way, you might be better off using Text::CSV or the like instead of doing your own splitting.