Hi Robert

Boy you have really made this hard on yourself (and us) :)

Why didn't you post this line

02/18 15:54:26 ##### data dev=ttyC12, pid=13032,
caller='none',conn='31200/LAPM/V42BIS', name='', cmd='/usr/sbin/pppd',
user='/AutoPPP/'

and say that you know the pid and the dev, and need to get the other
fields when you match this line?

My answer would (without all this fanfare) have been

sub w1_connect_info {
    # This routine extract available info passed in the getty logs.
    # Here is a sample of the line we are looking for:
    # 02/18 15:54:26 ##### data dev=ttyC12, pid=13032, caller='none',
conn='31200/LAPM/V42BIS', name='', cmd='/usr/sbin/pppd', user='/AutoPPP/'
    my ($getty_id,$ttydev) = @_;
    my ($line,$item);
    my (@getty_line);
    
    open (GETTYFILE, "</var/log/getty.log.$ttydev") || die "Can't open
log.$ttydev: $!";
    while (<GETTYFILE>) {
        if ( /##### data dev=$ttydev, pid=$getty_id, caller='(.*?)',
conn='(.*?)\/(.*?)\/(.*?)', name='(.*?)', cmd='(.*?)', user='(.*?)'/) {
             print "getty data: $2/$3/$4\n";
             print "other stuff you don't seem to care about: caller=$1
name=$5  cmd=$6 user=$7\n";
             last;
         }
    }
    
    close GETTYFILE;

} # sub w1_connect_info

make sure you put a space before conn when you unwrap these lines.

since the format is so well defined, you don't need to get fancy here
charles

On Mon, 21 Feb 2000, Robert Canary wrote:

> Hi Charles,  thanks for your help.
> 
> Here is I ended up doing this, it is too long and bulky.
> #!/usr/bin/perl
> 
> <Blah, blah, blah ............. more perl code......>
> 
> sub w1_connect_info {
>     # This routine extract available info passed in the getty logs.
>     # Here is a sample of the line we are looking for:
>     # 02/18 15:54:26 ##### data dev=ttyC12, pid=13032, caller='none',
> conn='31200/LAPM/V42BIS', name='', cmd='/usr/sbin/pppd', user='/AutoPPP/'
>     my ($getty_id,$ttydev) = @_;
>     my ($line,$item);
>     my (@getty_line);
> 
>     open (GETTYFILE, "</var/log/getty.log.$ttydev") || die "Can't open
> log.$ttydev: $!";
>     while ($line = <GETTYFILE>) {
>  if ($line =~ /$getty_id/ && $line =~ /$ttydev/) {   # I am looking for a
> certain PID and a certain tty
>      $line =~ s/^(\d{2}\W{1}\d{2}\s+(..):(..):(..)\s+#####\s+data\s+)//m;  # Get
> rid of the date stuff
>      $line =~ s/,{1}/","/g; # replace the comma delimiters with a ",". This will
> surround the fields
>                             # with quotes.
>      $line =~ s/\s+//g;            # Rid the white spaces
>      $line = "\"" . $line . "\"";  # Add quotes on both ends to close the first
> and last set of quotes.
>      print "This is the new \$line: ",$line;
>      my ($coded) = "push (\@getty_line, $line);";
>      print "This is the \$coded: ",$coded;
>      eval $coded;
>      print "getty data: ",@getty_line[3],"\n";
>  }
>     }
> } # sub w1_connect_info
> 
> 
> 
> I am still trying to get your single line while statement to roll but I get an
> empty array.
> 
> Charles Galpin wrote:
> 
> > If this did what you wanted Robert, then please ignore. But from the looks
> > of it, this will just get the first item1='value' from each line.
> >
> > The following gets all values on each line, using your example data.
> >
> > #!/usr/local/bin/perl -n
> >
> > # this is what you want
> > push (@list, $1) while ( /.*?='(.*?)'/g );
> >
> > # test what we got
> > $i=1;
> > print "Current Line: $_";
> > foreach $item ( @list ) { print "item" . $i++ . " = $item\n"; }
> >
> > hth
> > charles
> >
> > p.s. who or what is inseerting the list name into the subject (which I
> > removed), and why?
> 
> Hmm,  I not sure I know what your talking about.  The post I received did not
> have that in it.
> 
> --
> robert canary
> system services
> OhioCounty.Net
> [EMAIL PROTECTED]
> (270)298-9331 Office
> (270)298-7449 Fax
> 
> 
> 
> -- 
> To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe"
> as the Subject.
> 




-- 
To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe"
as the Subject.

Reply via email to