http://www.perlmonks.org?node_id=999147


in reply to Re: Array size issue
in thread Array size issue

That is not what I want. I want to save the line to the array if it matches the expression. I don't want to print anything this is just for debugging to make sure my array is containing the proper lines.

Replies are listed 'Best First'.
Re^3: Array size issue
by blue_cowdawg (Monsignor) on Oct 15, 2012 at 18:45 UTC
        That is not what I want.

    Sorry.... could have fooled me considering the logic in your original post.

    If I break your code down into pseudo-code it reads like this:

      open a pipe to the tail -f command for a logfile (unnamed)
      iterate over the pipe
        if less than 3 files are in array
          if the line matches a (undetermined) IP address
            push the line into an array
          otherwise
            exit the program
        Iterate over the contents of the array
          print line

    Part of the art of getting good answers on Perl Monks is being concise about your questions and not leaving what you are after up to the interpretation of the reader.

    Once again I will attempt to extrapolate what you are after. You code will work better if you don't put the print lines in and change the exit for last.


    Peter L. Berghold -- Unix Professional
    Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg

      I apologize for not being clear and I do appreciate all the valuable input I get from this community.

      Without the print statement I will not be able to debug my code. I want to make sure my array is carrying the proper line/data before attempting to process it. This is what I got after reading all the comments. I think I'm missing a small piece and I can't figure it out.

      open my $tailf, "tail -f $logFile |" or die; while (<$tailf>) { chomp; my $line = $_; if($line =~ m/ on $ipaddress/) { if (scalar(@matches) <= 2){ push(@matches, $line); } else { last; } } } foreach $line (@matches){ print "$line\n"; } close $tailf;

        myself I'd rewrite two of your "ifs."

        next unless ($line =~ m@on $ipaddress@); last if scalar(@matches) >= 2;
        At least to my eye that's more readable.


        Peter L. Berghold -- Unix Professional
        Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg