Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

regex case-sensitivity problem

by tmiklas (Hermit)
on May 05, 2002 at 17:50 UTC ( #164158=perlquestion: print w/replies, xml ) Need Help??

tmiklas has asked for the wisdom of the Perl Monks concerning the following question:

Fellow Monks...

Maybe it's not a problem at all, but maybe some of you know why this one below does a case-sensitive match, when it is told not to:
if ( (/sendmail\[.*?\[(.*?)\],.*?Relaying denied/i) || (/gnu-pop3d\[.*?refused connect from (.*?)$/i) || (/cucipop\[.*?authentication failure\s.*?\s(.*?)$/i) ) { return ($1) };
I mean that this doesn't match 'relaying denied' - only 'Relaying denied'. It happens only on two of all machines I run - both running Slackware with Perl 5.6.0. The other machines (all running Debian + Perl 5.6.0/5.6.1) doesn't have this problem - regex match is case-insensitive.
Maybe I've wrote something wrong and can't find the place?! BTW. On those 2 machines other scripts with much simplier regexes (like 'm/is_that_word_here/i') work the same way (= doesn't work) :-(
Please help...

Greetz, Tom.

Replies are listed 'Best First'.
Re: regex case-sensitivity problem
by Corion (Patriarch) on May 05, 2002 at 18:47 UTC

    The problem must be with your input data, as I get a match with the following test cases :

    sub check { $_ = "sendmail[[text to be captured from sendmail],relaying denied"; (/sendmail\[.*?\[(.*?)\],.*?Relaying denied/i) and return ($1); (/gnu-pop3d\[.*?refused connect from (.*?)$/i) and return ($1); (/cucipop\[.*?authentication failure\s.*?\s(.*?)$/i) and return ($1) +; return "No match found"; }; print check,"\n";

    and also with

    sub check { $_ = "sendmail[[text to be captured from sendmail],relaying denied"; if ( (/sendmail\[.*?\[(.*?)\],.*?Relaying denied/i) || (/gnu-pop3d\[.*?refused connect from (.*?)$/i) || (/cucipop\[.*?authentication failure\s.*?\s(.*?)$/i) ) { return ($1) }; return "No match found"; }; print check,"\n";

    The matches are exactly the same as your matches. My guess is, that you've got an extraneous \[ sprinkled in your sendmail RE.

    perl -MHTTP::Daemon -MHTTP::Response -MLWP::Simple -e ' ; # The $d = new HTTP::Daemon and fork and getprint $d->url and exit;#spider ($c = $d->accept())->get_request(); $c->send_response( new #in the HTTP::Response(200,$_,$_,qq(Just another Perl hacker\n))); ' # web
      You are right, but one thing is really strange - the same set of regex rules (currently 13 of them) works great on about 10 machines and doesn't work on those two (only).
      The input line with sendmail contains
      <sys_date> sendmail[pid]: <i>some stuf</i> [ip_add +r], <i>some stuf</i> Relaying denied
      Well - even if this rule or the input is wrong, then ok - it can be wrong - never mind - I'll fix it - but then, why it works on other computers?
      I'm afraid of what I've mentioned - even very simple regex works only case-sensitive. For example this code I've written about a year ago:
      #!/usr/bin/perl use strict; my @in; open (FH, "ps ax |"); chomp(@in = <FH>); close (FH); $_ = join(//,@in); chomp; if (! /\/ { system("/etc/rc.d/rc.remote-logger") }; if (! /\/mle/i) { system("/etc/rc.d/rc.mle") };
      I know it's dirty and not professional - sorry for that :-) Anyway mle is recognized as it should be but is not - it's done case-sensitive (on those 2 machines only).
      I can always do some work-around to solve this problem in the other way, but I got supprised by those non-working regex lines. I can't find anything strange in system configuration, I've compiled perl from pure tarball several times on those machines and nothing helped so far :-(

      Tnx for suggestions
      Greetz, Tom.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://164158]
Approved by mattriff
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2022-05-28 20:15 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (101 votes). Check out past polls.