Morgen,
vielleicht ist es noch zu früh, aber ich komme einfach nicht drauf und kann mir auch nicht erklären, dass ich das Problem noch nicht hatte.
Ich möchte den Rückgabewert einer Funktion bei einer Verwendung nach einer IF-Abfrage haben, aber ich habs einfach nicht geschafft - wobei das ja wirklich sehr noch Anfängerkram aussieht :-)
So sieht das jetzt aus
my $b = index( $relsearch , $sb ) ;
if ( $b >= 0 ) {
$relval += $b ;
$it++ ;
}
und was ich will ist
if ( index( $relsearch , $sb ) >= 0 ) {
$relval += WAS MUSS HIER REIN FÜR DIE RÜCKGABE DES index ;
$it++ ;
}
ich habe alle mir bekannten Spezialvars probiert, sogar im grossen Buch nachgeschaut, aber es nicht geschafft. Mit einem Regex geht das leicht über $-[0] - aber ich teste gerade die Performance zwischen
$line =~ /\Q$sb\E/i
index( lc($line) , $sb )
was ja das gleiche ist. Ist übrigens sehr interessant.
PS: Den index-Werte verwende ich für die Gewichtung, umso weiter vorne umso besser der Treffer.
PPS: Wenns interessiert
sub m11 { $in1 =~ /\Q$sb/i }
sub m12 { $in1 =~ /$sb/i }
sub m22 { index( lc($in1) , $sb ) }
die Methode m12 ist immer die schnellste, egal wie lang der String ist und egal an welcher Stelle das Matching stattfindet. Ich wäre davon ausgegangen das index am schnellsten ist. m12 zu m11 unterscheiden sich ca. in 10% was ich auch unlogisch finde, da der Inhalt ja nicht mehr interpretiert werden muss.
Danke wie immer ...
Last edited: 2009-12-13 09:02:35 +0100 (CET)