<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Раздел полезных советов: Как в Perl оптимально заменить символы в строке или разбить строку на части</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/4712.html</link>
    <description>При работе с большими строками нужно избегать внутреннего копирования строк, &lt;br&gt;которое происходит при использоании регулярных выражений или оператора split.&lt;br&gt;&lt;br&gt;Для разбиеная строки вида &quot;small_begin:big_end&quot; на две подстроки используем:&lt;br&gt;   my $pos=index($str, &apos;:&apos;);&lt;br&gt;   my $begin_str = substr($str, 0, $pos,&quot;&quot;); &lt;br&gt;   # в $str остается только big_end часть, в $begin_str - &quot;small_begin:&quot;&lt;br&gt;&lt;br&gt;Соответсвенно, для замены символов удобно использовать:&lt;br&gt;    substr(строка, начало замены, число заменяемых символов, блок на который заменяем);&lt;br&gt;&lt;br&gt;URL: &lt;br&gt;Обсуждается: http://www.opennet.ru/tips/info/754.shtml&lt;br&gt;</description>

<item>
    <title>Как в Perl оптимально заменить символы в строке или разбить строку на части (tor)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/4712.html#9</link>
    <pubDate>Sun, 14 Jun 2009 18:57:49 GMT</pubDate>
    <description>Если добавить use strict; то результат изменится :-)&lt;br&gt;</description>
</item>

<item>
    <title>Как в Perl оптимально заменить символы в строке или разбить ... (achmed)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/4712.html#8</link>
    <pubDate>Mon, 13 Dec 2004 12:57:38 GMT</pubDate>
    <description>даже если писать на компилируемом языку (например Си),&lt;br&gt;скорость при использовании регулярных выражений (библиотек &lt;br&gt;много разных) будет медленнее чем при использовании &lt;br&gt;стандартных функций для работы со строками, за удовство &lt;br&gt;приходится платить скоростью.</description>
</item>

<item>
    <title>Речь шла про &apos;оптимально&apos; (mic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/4712.html#7</link>
    <pubDate>Thu, 09 Dec 2004 04:17:45 GMT</pubDate>
    <description>Где-то недавно видел статейку на английском про оптимизацию этого процесса. Щас уже не найду, но скриптик оттуда (переделанный слегка) вот:&lt;br&gt;&lt;br&gt;---------------------------------------------&lt;br&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;my $URI = &quot;http://www.stonehenge.com/merlyn/&quot; .&lt;br&gt;    &quot;Pictures/Trips/2003/03-06-PerlWhirlMacMania/&quot; .&lt;br&gt;    &quot;Day-0-Pearl-Harbor/?show=14&quot;;&lt;br&gt;  sub re_match &#123;&lt;br&gt;    my $str = $URI;&lt;br&gt;    my ($scheme, $rest) = $str =~ /(.*?):(.*)/;&lt;br&gt;$ir++;&lt;br&gt;  &#125;&lt;br&gt;  sub split_it &#123;&lt;br&gt;    my $str = $URI;&lt;br&gt;    my ($scheme, $rest) = split /:/, $str, 2;&lt;br&gt;$is++;&lt;br&gt;  &#125;&lt;br&gt;  sub index_substr &#123;&lt;br&gt;    my $str = $URI;&lt;br&gt;    my $scheme = substr($str, 0, index($str, &quot;:&quot;)-1);&lt;br&gt;    my $rest = substr($str, index($str, &quot;:&quot;)+1);&lt;br&gt;$ii++;&lt;br&gt;  &#125;&lt;br&gt;&lt;br&gt;# Счетчик цикла&lt;br&gt;$k=1000000;&lt;br&gt;$tt = times;&lt;br&gt;for ($i=0;$i&amp;lt;$k;$i++) &#123; &amp;re_match; &#125;&lt;br&gt;print &quot;re_match = &quot;,times - $tt,&quot; s.&#092;n&quot;;&lt;br&gt;&lt;br&gt;$tt = times;&lt;br&gt;for ($i=0;$i&amp;lt;$k;$i++) &#123; &amp;split_it; &#125;&lt;br&gt;print &quot;split_it = &quot;,times - $tt,&quot; s.&#092;n&quot;;&lt;br&gt;&lt;br&gt;$tt = times;&lt;br&gt;for ($i=0;$i&amp;lt;$k;$i++) &#123;&lt;br&gt;&amp;index_substr;&lt;br&gt;&#125;&lt;br&gt;print &quot;index_substr = &quot;,times - </description>
</item>

<item>
    <title>Как в Perl оптимально заменить символы в строке или разбить ... (Maxim Chirkov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/4712.html#6</link>
    <pubDate>Fri, 03 Dec 2004 07:40:24 GMT</pubDate>
    <description>&amp;gt;При таких объемах это естественно. &lt;br&gt;&amp;gt;Perl для небольших объемов расчитывался. &lt;br&gt;&lt;br&gt;Лишние копирования сильно паразитируют в циклах и для маленьких строк.&lt;br&gt;&lt;br&gt;&amp;gt;Выход: написать на си подпрограмму &lt;br&gt;&lt;br&gt;Не всегда критический участок поддается такому преобразованию, когда напирмер, используются хэши или регекпсы.&lt;br&gt;&lt;br&gt;&amp;gt; или скомпилить скрипт в бинарник perl2bin &lt;br&gt;&lt;br&gt;При цикличных операциях выйгрыша не будет, так как скрипт уже переведен в псевдокод.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как в Perl оптимально заменить символы в строке или разбить строку на части (agility_member)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/4712.html#5</link>
    <pubDate>Fri, 03 Dec 2004 06:11:38 GMT</pubDate>
    <description>а awk или sed ?</description>
</item>

<item>
    <title>Как в Perl оптимально заменить символы в строке или разбить ... (Игорь)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/4712.html#4</link>
    <pubDate>Fri, 03 Dec 2004 03:45:17 GMT</pubDate>
    <description>При таких объемах это естественно.&lt;br&gt;Perl для небольших объемов расчитывался.&lt;br&gt;Выход: написать на си подпрограмму или скомпилить скрипт в бинарник&lt;br&gt;perl2bin&lt;br&gt;</description>
</item>

<item>
    <title>Как в Perl оптимально заменить символы в строке или разбить ... (Maxim Chirkov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/4712.html#3</link>
    <pubDate>Thu, 02 Dec 2004 06:32:21 GMT</pubDate>
    <description>&amp;gt;разбить или выделить: &lt;br&gt;&amp;gt;($str1, $str2, str3 ...) = split (&quot;:&quot;, $string); &lt;br&gt;&lt;br&gt;Господа, речь идет про исключение лишних копирований в памяти. На досуге, возмите  в качестве $string строку размером несколько Мб и посмотрите сколько будет занимать процесс perl в памяти после split и &quot;=~&quot; (кстати сказать, простейшие замены с совпадением размера память лишнюю не потребляют).&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как в Perl оптимально заменить символы в строке или разбить строку на части (Игорь)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/4712.html#2</link>
    <pubDate>Thu, 02 Dec 2004 03:34:43 GMT</pubDate>
    <description>разбить или выделить:&lt;br&gt;($str1, $str2, str3 ...) = split (&quot;:&quot;, $string);&lt;br&gt;замена:&lt;br&gt;$string =~ s/xaker/maker/g;&lt;br&gt;</description>
</item>

<item>
    <title>Как в Perl оптимально заменить символы в строке или разбить строку на части (bm)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/4712.html#1</link>
    <pubDate>Tue, 30 Nov 2004 12:00:03 GMT</pubDate>
    <description>А не удобнее ли использовать для замены регулярные выражения вроде:&lt;br&gt;$str =~ s/h/j/g;&lt;br&gt;&lt;br&gt;Заменит во всей строке символы h на j.&lt;br&gt;</description>
</item>

</channel>
</rss>
