Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re: Substring comparison

by schtinkfist893 (Novice)
on May 01, 2012 at 15:12 UTC ( #968279=note: print w/replies, xml ) Need Help??

in reply to Substring comparison

I am working with index() and how I am using it with Arrays is not working
foreach(@Array1) { $string1 = $_; foreach(@Array2) { my string2 = $_; my $result = index($string2, $string1); if($result <= 0) { print $string1, " is not found in ", $string2, +"\n"; } } }

My @Array1[0] and $string1 is 'FFF'
My @Array2[0] and $string2 is 'FFF NNN JKK III LLL QQQ'
However my return on the above is

FFF is not found in FFF NNN JKK III LLL QQQ

Cleary 'FFF' is part of string 'FFF NNN JKK III LLL QQQ' and should return a result >= 0

This code works however when I am not using Arrays
my $string = "FFF NNN JKK III LLL QQQ"; my $substr = "LLL"; my $result = index($string, $substr); if($result > 0) { print "Result: $result\n"; } else { print "not found";
Result: 16
Is there some way I am going about my Array handling incorrect

Replies are listed 'Best First'.
Re^2: Substring comparison
by trammell (Priest) on May 01, 2012 at 15:16 UTC
    Index returns 0 if the match is at the front of the string, i.e. string offset 0.

    perl -le 'print index("foobar","foo")'

Re^2: Substring comparison
by JavaFan (Canon) on May 01, 2012 at 16:11 UTC
    Cleary 'FFF' is part of string 'FFF NNN JKK III LLL QQQ' and should return a result >= 0
    Indeed, and it does. However, the negation of result >= 0 is not if($result <= 0), which is what you wrote in your program. There is a value (0) that's both >= 0 and <= 0.

    Use if ($result == -1) in your program.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://968279]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (8)
As of 2020-10-26 13:57 GMT
Find Nodes?
    Voting Booth?
    My favourite web site is:

    Results (251 votes). Check out past polls.