Автор Тема: format STDOUT и двумерный массив  (Прочитано 3549 раз)

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

Оффлайн micolo

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
format STDOUT и двумерный массив
« : 18 Апреля 2007, 13:50:15 »
Доброго времени суток!
У меня простой вопрос, но решить самому быстро не получается. Есть скрип который обрабатывает логи по нужному формату.


push 
@a, [split /\\|/] while <>;

for(
my $y=0$y<@a$y++) {

    for(
my $x=0$x<@{$a[$y]}; $x++) {

format STDOUT=
@<<<<<<<<<<<<<<<<<<<<    @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<
$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x]
.
write();

    }

}


Мне нужно чтобы запись из массива записывалась в строчку. Я у меня получается в столбик - где моя ошибка?

Оффлайн unplugged

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
format STDOUT и двумерный массив
« Ответ #1 : 18 Апреля 2007, 15:51:34 »
Во-первых, очень сомневаюсь, что вот эта конструкция может корректно работать:
push @a, [split /|/] while <>;
| - специальный символ в перловых регекспах, надо ескейпить, и лучше бы результат split сохранять в отдельном массиве. Получится подлиннее, но зато работает:

#!/usr/bin/perl
use Data::Dumper;
while ( 
my $str = <> ) {
        
chomp $str;
        
my @split split /\\|/, $str;
        
push @a, \\@split;
}

#push @a, [split /\\|/] while <> ne "quit\\n";
#print Dumper( @a );

for(my $y=0$y<@a$y++) {

    for(
my $x=0$x<@{$a[$y]}; $x++) {

format STDOUT=
@<<<<<<<<<<<<<<<<<<<<    @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<
$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x],$a[$y]->[$x]
.
write;

    }

}


Остальное не трогал - зачем вообще выводить по восемь одинаковых слов в строке :)?

Оффлайн micolo

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
format STDOUT и двумерный массив
« Ответ #2 : 18 Апреля 2007, 18:18:41 »
да нашёл такой пример в инете, вообще мне нужно чтобы в строке были разные значения....

Оффлайн unplugged

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 10
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
format STDOUT и двумерный массив
« Ответ #3 : 18 Апреля 2007, 18:44:39 »
Впервые вижу пример использования format-write в перле :)
По-моему, для форматирования текста вполне достаточно (s)printf:

#!/usr/bin/perl
use strict;

my @a;
while ( 
my $str = <> ) {
        
chomp $str;
        
last if lc($streq "quit";
        
my @split split /\\\\|/, $str;
        
push @a, \\\\@split;
}

for(
my $y=0$y<@a$y++) {
    for(
my $x=0$x<@{$a[$y]}; $x++) {
        
printf "%10s"$a[$y]->[$x];
    }
    print 
"\\n";
}

P.S. Движок почему-то тупо вырезает обратные слеши внутри тегов PHP. Должно быть:
my @split = split /\\|/, $str;
push @a, \\@split;
« Последнее редактирование: 18 Апреля 2007, 18:50:31 от unplugged »

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
format STDOUT и двумерный массив
« Ответ #4 : 19 Апреля 2007, 18:06:05 »
micolo
Покажите пожалуйста входящую строку, и вид как бы Вы хотели эту строку отформатировать.

Цитировать
Впервые вижу пример использования format-write в перле
По-моему, для форматирования текста вполне достаточно (s)printf:

Формат используется для построения аскии-отчетов, видимо их Вам просто не приходилось делать, т.к.  для контроля элайтмента Вам придется написать минимум 3 функции, а есть еще футеры, хедеры, номера страниц... Все это реализуемо, но когда реализуете, поймете, что это давно есть и Вы изобрели велосипед.
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

 

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