Автор Тема: назначение функции  (Прочитано 2384 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
назначение функции
« : 13 Декабря 2005, 20:34:35 »
Доброго времени суток.
помогите  пож-ста уяснить чего собственно тут задумывалось:
sub line_parser($) {
my($self,$text)=(shift,shift);
$text=~s/\\x0D//g; $text=~s!\\n!!g;
my $pt = $self->{tpldir}.\'/blue.tpl\';
open(D,$pt) or die "cannot read $pt $!"; flock(D,LOCK_EX); seek(D,0,0); local $/ = \'\';
my $line=; flock(D,LOCK_UN); close(D);

my ($n,$v,$tdtxt,$e)=($text=~/§BLUE_LINE_(\\d)\\|(.*)§(.*)§LINE_END_(\\d)§/);
my ($h,$r,$w)=split(/\\|/,$v);
my %lh = ($n => [$tdtxt,$h,$r,$w]);

$line=~s!!$lh{$n}[3]!;
$line=~s!!$lh{$n}[1]!;
$line=~s!!$lh{$n}[2]!;
$line=~s!!$lh{$n}[0]!;
my %H = ($n => $line);

$text=~s!§BLUE_LINE_$n.*§(.*)§LINE_END_$n§!$H{$n}!g;

return $text;

}

и вечер уже, а я всё никак в толк не возьму.
похоже, что тыт задумывалась некая универсальность, но её нет. т.е. это работает если в передаваемой строке есть ОДНА вставка §BLUE_LINE_1|Заголовок1|какой-то текст|50%§
здесь еще какой-то текст
§LINE_END_1§

если две - полная ерунда выводится.
может недописано просто? :(
пока-пока. :)

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
назначение функции
« Ответ #1 : 13 Декабря 2005, 22:54:41 »
while () {
  if (m|§BLUE_LINE_(\\d+)|...m|§LINE_END_$1§|) {
    # process of data block
  }
}

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
назначение функции
« Ответ #2 : 14 Декабря 2005, 19:38:02 »
arto разобралась. спасибо. ;)
пока-пока. :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28