On 2/26/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:

Thank you both.  I am trying to find out why "!~"  operator fails.  It is due to the 
whitespaces.  but I am using "six" to ignore spaces.

Sorry guys.  Below is the actual code.  I made the changes that A.R. Ferreira 
suggested and it fails.

use strict;
use warnings;

my $rdns="cn=Exchange Sites,cn=Proxy Views,cn=JoinEngine Configuration,ou=Conf,o
u=InJoin,ou=applications,dc=marriott,dc=com";

my $result="cn=Exchange Sites";

if ($result !~ /\Q$rdns\E/six) {
  print "\nresult: '$result'";
  print "\nrdn: '$rdns'\n";
} else {
  print "String is there\n";
}
OUTPUT is:
$ ./test.pl
result: 'cn=Exchange Sites'
rdn: 'cn=Exchange Sites,cn=Proxy Views,cn=JoinEngine 
Configuration,ou=Conf,ou=InJoin,ou=applications,dc=marriott,dc=com'

Tom your code works fine. But I was tring to understand why "!~" fails above.


It fails because *all* of $rdns is not in $result1.

The regex on the right is matched against the operand on the left. So,

   $result1 =~ /$rdns/

means "see if $result1 contains the pattern $rdns". What you wanted to
say was "see if $rdns contains the pattern $result1."  Or, if you want
to think about it the other way 'round: "see if pattern $result1
appears in $rdns." That is written as

   $rdns =~ $result1

To negate it ("make sure $result1 doesn't appear in $rdns"), you can
use !~ instead.

If you aren't using regex metacharacters (*,.,?, etc.), it is probably
both simpler and faster to use index:

  index($rdns, $result1)

That says "see if the substring $result1 appears in the string $rdns."

HTH,

-- jay
--------------------------------------------------
This email and attachment(s): [  ] blogable; [ x ] ask first; [  ]
private and confidential

daggerquill [at] gmail [dot] com
http://www.tuaw.com  http://www.downloadsquad.com  http://www.engatiki.org

values of β will give rise to dom!

Reply via email to