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.

It has nothing to do with whitespaces. As Tom said:

On 2/26/07, Tom Phoenix <[EMAIL PROTECTED]> wrote:
> if ($result !~ /$rdns/ix) {

That's checking whether $rdns, as a pattern, does not match the string
in $result. (Was that supposed to be $result1?) But I think you're
asking for this, maybe:

To check that $result1 is not a part of $rdns, you must say

   $rdns                       !~                          /\Q$result1\E/ix
   # which reads as:
   #  this string            does not match       the literal content
of $result1

If you exchange the pieces, it will always fail to find that the
smaller $result1 has a large piece $rdns within it.

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.

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:

String is there



-----Original Message-----
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Cc: beginners@perl.org
Sent: Mon, 26 Feb 2007 12:29 PM
Subject: Re: BInding operator fails


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

> Hi. I have a problem with the below code. I have two strings, $rdns and 
$result1.
> I want to make sure $result 1 is NOT part of $rdns. But the below fails...thus
> instead of printing the else part of the if-else-loop. It print the main 
part. Does
> anyone know what coudl cause this.

> if ($result !~ /$rdns/ix) {

That's checking whether $rdns, as a pattern, does not match the string
in $result. (Was that supposed to be $result1?) But I think you're
asking for this, maybe:

 if (index($rdns, $result) == -1) {
  print "\$result isn't part of \$rdns.\n";
 }

The index function is covered in perlfunc. Hope this helps!

--Tom Phoenix
Stonehenge Perl Training

-- To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/

________________________________________________________________________
Check out the new AOL.  Most comprehensive set of free safety and security 
tools, free access to millions of high-quality videos from across the web, free 
AOL Mail and more.


--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to