MYSTERRIA3.0

strreplace на Perl

Сижу, значит, никого не трогаю, примус починяю. И тут понадобилось заменить подстроку в строке на другую подстроку. Как всякому правильному программисту, писать самому такую хренотень влом, когда есть Гугл. Но не тут то было, просмотрев топ СЕРП-а по запросу "strreplace Perl" я пришел к выводу, что мир сошел с ума. Вот это предлагают в роли замены strreplace-а (НЕ ВЕРНО!):

sub Replace {
        my $strString = shift;
        my $strSearch = shift;
        my $strReplace = shift;
        $strString =~ s/$strSearch/$strReplace/ge;
        return $strString;
} 

Использовать здесь регулярки в корне не верно уже хотябы из-за того, что попавшая в переменную $strSearch точка будет интерпретироваться как любой символ и в итоге мы получим шанс написать плавающую (пропадающую/возникающую) ошибку. Так что либо пишем над функцией "Счастливой отладки, суки", либо делаем как надо. Правильный вариант замены функции strreplace на Perl:

sub strreplace{
    my ($string, $search, $replace) = @_;
    while( (my $i = index($string, $search)) > -1 ){
        substr($string, $i, length($search), $replace);
    }
    return $string;
}

 

Рубрики: Perl

↑ Наверх


blog comments powered by Disqus

Контакты

Igor Zinkovsky aka TLoD,Snake. Писать на электропочту, стучаться в аську 302380533, искать в Санкт-Петербурге.

© 2002-2019