in reply to Searching a multidimensional list

When you say "most recent" and "immediately previous", do you mean as ordered in the file, or as ordered by the timestamp?


Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller
If I understand your problem, I can solve it! Of course, the same can be said for you.

Replies are listed 'Best First'.
Re: Re: Searching a multidimensional list
by Mister_Inkster (Initiate) on Aug 02, 2003 at 01:06 UTC
    OK, the list of records is already sorted chronologically, so I am looking for the record that is closest to today, where:
    1) the agent is either Robb or Larry; AND
    2) the record directly below it in the list(i.e."immediately previous") does not have Robb or Larry as the agent.
    I hope that is clearer..
    Thx for the quick responses!
    MrI

      Okay.

      P:\test>perl -ne"$p=tell ARGV; print if /Larry|Robb/ and not scalar <> + =~ /Larry|Robb/; seek ARGV, $p, 0; " logfile 1056128833340 Robb 2003-06-20 665 ** 1055439973653 Larry 2003-06-16 815 **

      Usual caveat: 's instead of "s on *nix.

      Update: Added code to bottle out as soon as we've printed the two records.

      perl -ne"BEGIN{$C=0}$p=tell ARGV; ++$c, print if /Larry|Robb/ and not +scalar <> =~ /Larry|Robb/; seek ARGV, $p, 0; exit if $c==2 " logfile
      or golfed a bit
      perl -ne"BEGIN{$C=0}$p=tell ARGV;/Larry|Robb/&<>!~/Larry|Robb/and++$c, +print;seek ARGV,$p,0;$c==2&&exit" logfile

      Examine what is said, not who speaks.
      "Efficiency is intelligent laziness." -David Dunham
      "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller
      If I understand your problem, I can solve it! Of course, the same can be said for you.