Okay, just for clarification. The line from the log file was word
wrapped. It does show on one line in the actual file.
Second, the pattern I am trying to match is exactly how it is in the m//
statement. So it is all caps, and it's those three words I'm trying to
match.
Also, I should have said the first time, I did make sure that the $status
variable had the regex in it (doing the print "Foo: $status" example). It
just started happening once I added in the else part of the section.
Thanks,
Tom
--
#!/usr/bin/perl -w # 526-byte qrpff, Keith Winstein and Marc Horowitz
<[EMAIL PROTECTED]> # MPEG 2 PS VOB file on stdin -> descrambled output
on stdout # arguments: title key bytes in least to most-significant order
$_='while(read+STDIN,$_,2048){$a=29;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;
$_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=
unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=($t=255)&($d
>>12^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9
,$_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t
^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271))
[$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval
On Mon, 25 Jun 2001, Jos I. Boumans wrote:
> Ok, here are a few things you need to concider:
>
> you are matching in caps and literally that... if it's on multiple lines or
> if it's lower case or...
> anyway, try this: /SERVICE NOT AVAILABLE/i; #that will ignore case
>
> double check that that is REALLY what you want to match... try a print out
> or so like this:
> while (my $status = <TAIL>){
> print "FOO: $status\n";
>
> and see what it prints
>
> next, you dont want to put [] around your regexp.. that's for character
> classes and not at all what you want here
> (take a look at www.sharemation.com/~perl/tut for some tutorials about this)
>
> last, you dont want to use 'exit' in that else statement, seeing that will
> not only exit the loop, but will exit the entire program
> you're probably looking for 'last'
>
> hth,
>
> Jos BOumans
>
> you are matching
> ----- Original Message -----
> From: "Tom Yarrish" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, June 25, 2001 9:13 PM
> Subject: My mis-understanding of if/else?
>
>
> > Hey all,
> > Okay, I'm still working on my little Net::Telnet project, but a different
> > section of the code is giving me a problem. I thought I had an
> > understanding of regex an if/else, but apparently not.
> > Here's the code snippet:
> >
> >
> >
> > open(TAIL, "tail $glmiss_log|") or die "Can't tail on $glmiss_log: $!\n";
> >
> > while (my $status = <TAIL>){
> > if ($status =~ /SERVICE NOT AVAILABLE/){
> > print "Service not running, attempting to start.\n";
> > print "This may take a few minutes.\n";
> > $fix = 1;
> > } else {
> > print "Service is connected.\n";
> > $fix = 0;
> > exit;
> > }
> > }
> >
> > Okay, the $glmiss_log points to a logfile, and for test purposes I'm using
> > one that has the "Service not available" error at the end of it. So the
> > first part of the if statement should pick it up. Here's what the error
> > looks like in the log:
> >
> > WARNG 05:02:10 VCI_Login : TECH_VCI_ERROR 00120 - EXCHANGE SERVICE NOT
> > AVAILABLE
> >
> > Now if I put [] around the regex, it matches it, but without it skips and
> > goes right to the else statement. Do I need to put any pattern matching
> > for the rest of the line? I basically just need it to see this error
> > (which if there's a problem will be the last line in the log file) and
> > then I have it do something once it exits the loop.
> >
> > Thanks ahead of time,
> > Tom
> >
> >
> > --
> > #!/usr/bin/perl -w # 526-byte qrpff, Keith Winstein and Marc Horowitz
> > <[EMAIL PROTECTED]> # MPEG 2 PS VOB file on stdin -> descrambled output
> > on stdout # arguments: title key bytes in least to most-significant order
> >
> $_='while(read+STDIN,$_,2048){$a=29;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;
> >
> $_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=
> > unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=($t=255)&($d
> > >>12^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9
> > ,$_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t
> >
> ^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271)
> )
> >
> [$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eva
> l
> >
> >
>
>
>