<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; [perl]почему переменная в "дочерних" фигурных скобках не работает?]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=34283</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=34283&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «[perl]почему переменная в "дочерних" фигурных скобках не работает?».]]></description>
		<lastBuildDate>Tue, 25 Mar 2014 04:20:22 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: [perl]почему переменная в "дочерних" фигурных скобках не работает?]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=402093#p402093</link>
			<description><![CDATA[<div class="quotebox"><cite>moshell пишет:</cite><blockquote><p>доктор, почему ты не юзаешь пёрл?</p></blockquote></div><p>зачем?<br /></p><div class="quotebox"><cite>moshell пишет:</cite><blockquote><p>как раз &quot;регулярный&quot; язык.</p></blockquote></div><p>sed тоже. Он тоже тьюринг-полный.<br /></p><div class="quotebox"><cite>moshell пишет:</cite><blockquote><p>что если просто брать весь файл в переменную, и этим кодом парсить его, то РАБОТАЕТ!<br />но файл слишком большой. и на это уходит около 5 минут, с загрузкой CPU 99,9%.&nbsp; (регулярка сжирает ресурсы)</p></blockquote></div><p>короткую сказку про дурака и хрустальный пенис знаешь?<br /></p><div class="quotebox"><cite>moshell пишет:</cite><blockquote><p>вот собственно весь код</p></blockquote></div><p>я не видел ничего более плохого за последнюю неделю.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Tue, 25 Mar 2014 04:20:22 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=402093#p402093</guid>
		</item>
		<item>
			<title><![CDATA[Re: [perl]почему переменная в "дочерних" фигурных скобках не работает?]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=401976#p401976</link>
			<description><![CDATA[<div class="quotebox"><cite>yars пишет:</cite><blockquote><div class="quotebox"><blockquote><p>при чем тут язык в принципе?</p></blockquote></div><p>Разве что, играя в футбол, ты соблюдаешь футбольные правила, а не хоккейные :-)</p></blockquote></div><p>сагласин.<br />но правила областёв видимостёв переменных у всех языков наверняка одинаковые.<br />уверен, в большинстве случаёв одинаковы.</p>]]></description>
			<author><![CDATA[null@example.com (moshell)]]></author>
			<pubDate>Mon, 24 Mar 2014 07:43:44 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=401976#p401976</guid>
		</item>
		<item>
			<title><![CDATA[Re: [perl]почему переменная в "дочерних" фигурных скобках не работает?]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=401963#p401963</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>при чем тут язык в принципе?</p></blockquote></div><p>Разве что, играя в футбол, ты соблюдаешь футбольные правила, а не хоккейные :-)</p>]]></description>
			<author><![CDATA[null@example.com (yars)]]></author>
			<pubDate>Mon, 24 Mar 2014 06:47:39 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=401963#p401963</guid>
		</item>
		<item>
			<title><![CDATA[Re: [perl]почему переменная в "дочерних" фигурных скобках не работает?]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=401959#p401959</link>
			<description><![CDATA[<p>нужно было всего лишь взглянуть трезвой головой на код и вытащить определение переменных<br /></p><div class="quotebox"><blockquote><p>my ($replace, $target);</p></blockquote></div><p>перед началом цикла<br /></p><div class="quotebox"><blockquote><p>foreach (@UtranCells){</p></blockquote></div><p>и опять же вопрос. при чем тут язык в принципе?</p>]]></description>
			<author><![CDATA[null@example.com (moshell)]]></author>
			<pubDate>Mon, 24 Mar 2014 06:04:42 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=401959#p401959</guid>
		</item>
		<item>
			<title><![CDATA[Re: [perl]почему переменная в "дочерних" фигурных скобках не работает?]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=401551#p401551</link>
			<description><![CDATA[<p>самое интересное это то,<br />что если просто брать весь файл в переменную, и этим кодом парсить его, то РАБОТАЕТ!<br />но файл слишком большой. и на это уходит около 5 минут, с загрузкой CPU 99,9%.&nbsp; (регулярка сжирает ресурсы)</p><p>поэтому я разбил файл на куски (затащил в массив)<br />в каждом элементе массива кусок файла.</p><p>а вот этот while уже обрабатывает каждый элемент массива, то есть каждый кусок парсит.<br />но не пойму, как это может повлиять?</p><p>кусок кода он и в африке кусок кода.</p><br /><p>вот собственно весь код<br /></p><div class="codebox"><pre><code>#!/usr/bin/perl -w
use strict;
use 5.014;
my $data;

while (&lt;&gt;){      # all string to one variable
    $data .= $_;
}


$data =~ s/^ .*? ^ (Proxy Id .*) ^ Total .*/$1/xms;   # delete the garbage at the start and end the &quot;file&quot;
$data =~ s/^ (MO .*) \n =+/$1/gmx;            # delete middle separater &quot;===========+&quot;

my @MO = split /(?: =====+ \n)/x, $data;      # create an array of MOs

my @UtranCells;
foreach (@MO){                   # create an array of UtranCells
    if (/^ MO .* ,UtranCell= \d+ $/mx) {
        push @UtranCells, $_;
    }
}

foreach (@UtranCells){
    my ($replace, $target);
    while ($_ =~ /
        ^ Struct \s (\w+) \s has \s \d+ \s members: $
        (?{ undef $replace})
        (?{ undef $target})
        \n
        (?: \s &gt;&gt;&gt; \s \d+ \. (\S+) \s = \s (.*)
        (?{ $replace .= &quot;$1.$2 $3\n&quot;})
        \n ) +
        (?{ $target = $&amp;})
#        (?{ print $target})
#        (?{ print $replace})
        /gmx){
            $_ =~ s/\Q$target\E/$replace/;
        }
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (moshell)]]></author>
			<pubDate>Fri, 21 Mar 2014 11:44:10 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=401551#p401551</guid>
		</item>
		<item>
			<title><![CDATA[Re: [perl]почему переменная в "дочерних" фигурных скобках не работает?]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=401548#p401548</link>
			<description><![CDATA[<p>доктор, почему ты не юзаешь пёрл?<br />как раз &quot;регулярный&quot; язык.</p><p>у меня 100лько вопросов..<br />неужели тут нет пёрловодов?</p>]]></description>
			<author><![CDATA[null@example.com (moshell)]]></author>
			<pubDate>Fri, 21 Mar 2014 11:35:42 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=401548#p401548</guid>
		</item>
		<item>
			<title><![CDATA[[perl]почему переменная в "дочерних" фигурных скобках не работает?]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=401538#p401538</link>
			<description><![CDATA[<p>вроде все верно, ан нет.<br />интерпретатор ругается, мол <br /></p><div class="quotebox"><blockquote><p>Use of uninitialized value $target in quotemeta at ./perl/kget_to_xlsx_utrancell line 41, &lt;&gt; line 208910.<br />Use of uninitialized value $replace in substitution (s///) at ./perl/kget_to_xlsx_utrancell line 41, &lt;&gt; line 208910.</p></blockquote></div><br /><p>хотя, ХОТЯ.<br />если раскоментировать закоменченные строки. то без ошибок выводит именно то <strong>ЧТО</strong> должно быть заменено и то <strong>ЧЕМ</strong> должно быть заменено</p><p>вот сам кусок кода.</p><div class="codebox"><pre><code>    my ($replace, $target);
    while (/
        ^ Struct \s (\w+) \s has \s \d+ \s members: $
        (?{ undef $replace})
        (?{ undef $target})
        \n
        (?: \s &gt;&gt;&gt; \s \d+ \. (\S+) \s = \s (.*)
        (?{ $replace .= &quot;$1.$2 $3\n&quot;})
        \n ) +
        (?{ $target = $&amp;})
#        (?{ print $target})
#        (?{ print $replace})
        /gmx){
            $_ =~ s/\Q$target\E/$replace/;
        }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (moshell)]]></author>
			<pubDate>Fri, 21 Mar 2014 10:46:03 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=401538#p401538</guid>
		</item>
	</channel>
</rss>
