Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Скрипт замены текста не работает


Автор: NZero 7.11.2013, 18:29
Скрипт бегает по строкам в файле, если находит нужную строку заменяет данные в строке

Код

for(;$i < $len; $i++)
{
   if($str[$i] =~ /$n_field[$n]/)
   {
     $str[$i] =~ /<.*?>(\d+)<\/.*?>/;
     $str[$i] =~ s/(<.*?>)(\d+)(<\/.*?>)/$1$wrong_ip[$w]$3/;
     print $fout $str[$i];
     $i++;
   }
   print $fout $str[$i];
}


Однако скрипт не очень работает. Строка остается неизменной.

Писал аналогичный скрипт, там все работает

Код

while ($i < $count)
    {
    if ($str[$i] =~ /$ff/g)
    {
        $str[$i] =~ /<.*?>(\d+)<\/.*?>/;
        $max = $1 + 1;
        $max = $1 + 7 if($ff eq "Primary_mask" || $ff eq "Sup_mask" || $ff eq "RTP_mask" || $ff eq "Amount_of_channels");
        $str[$i] =~ s/(<.*?>)(\d+)(<\/.*?>)/$1$max$3/;
        print $fout $str[$i];
        $i++;
    }
    print $fout $str[$i];
    $i++;
    
    }

Автор: arto 7.11.2013, 20:08
зачем вам 2 раза $str[$i] =~ ?

Автор: NZero 8.11.2013, 09:11
Убрал
Код

$str[$i] =~ /<.*?>(\d+)<\/.*?>/;


Только это никак не помогло(

Добавлено через 13 минут и 57 секунд
Разобрался. Сделал так
Код

$str[$i] =~ />(.*?)</;
$str[$i] =~ s/$1/$wrong_ip[$w]/;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)