At 14:50 -0400 6/28/99, Ronald J Kimball wrote: > On Mon, Jun 28, 1999 at 11:20:20AM -0700, Vicki Brown wrote: >> Specifically, the line which illustrates (to me) TMTOWTDI (but some are >> wrong) is: >> if ( index( $szPhdFile, ".phd." ) >= 0 ) { > > How does this line illustrate that some ways are wrong? This line of code > works just fine. I never said it didn't work. I said that just because TIMTOWTDI some of those ways are wrong. Wrong as in "inappropriate" not wrong as in "that would fail". >> I would have used >> >> if ($szPhdFile =~ /\.phd\./) { >> > Why would someone who understands index use pattern matching to find a > constant substring? Good question -- Because he doesn't understand =~ m/pattern/? :-) I don't think that's the operative question. I think the question is, rather, why would someone who wants to match a pattern do so using index()? The code is testing only that the substring exists in the string. The index value (position) never gets used except to check that it is >= 0. > What were you thinking? *grin* Clarity of expression :-) When I use index it's because I want to know the position of one string inside another. When I see index() I conclude that the _value_ of the index, i.e. the position of the substring, is important. I use index if I want to determine _Where_. I don't use index() when I simply want to know the truth value (is string a contained in string b). When I want to know the latter (and I don't care where, only if), I use a pattern match. I use pattern matching if I want to determine _If_. Maybe I'm just odd (OK. perhaps I should rephrase that... :) Using index() in this instance doesn't seem very... Perlish... somehow. It's also (imo) misleading. > It appears that index is faster for short target strings, but regex is > faster for long target strings. (With perl5.004, anyway.) As should be obvious from some of my other posts, I tend to value Making the Goal Clearer to the Reader over speed (at least when the speed issue is nearly moot). For those who can't recall the original code: opendir( dirPhdDir, $phdDirPath ) || die "couldn't open directory"; while( defined( $szPhdFile = readdir( dirPhdDir ) ) ) { if ( index( $szPhdFile, ".phd." ) >= 0 ) { ( $szRoot = $szPhdFile ) =~ s/\.phd\..*$//; $szRoot =~ s/^.*\///; if ( ! exists $aPhdFiles{ $szRoot } ) { $aPhdFiles{ $szRoot } = ""; } } } -- -- |\ _,,,---,,_ Vicki Brown <vlb@cfcl.com> ZZZzz /,`.-'`' -. ;-;;,_ Journeyman Sourceror: Scripts & Philtres |,4- ) )-,_. ,\ ( `'-' P.O. Box 1269 San Bruno CA 94066 '---''(_/--' `-'\_) http://www.cfcl.com/~vlb http://www.macperl.com ==== Want to unsubscribe from Fun With Perl? ==== Well, if you insist... Send mail with body "unsubscribe" to ==== fwp-request@technofile.org