The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Удаление лишних строк из массива"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Удаление лишних строк из массива"
Сообщение от agat emailИскать по авторуВ закладки on 20-Фев-03, 13:32  (MSK)
Уважаемые господа подскажите пожалуйста как вырезать из массива строки начинающиеся на #. Неделю бъюсь ничего не получается.
Пример:
#!/usr/bin/perl
@Stat = ('
#Timing mark 31626411. Interval 03:07
#1000 entries of 1000
#Dropped 533573 bytes
#src dst bytes
xxxxxxxx      xxxxxxxxxxxxx
xxxxxxxx      xxxxxxxxxxxxx
#end');
foreach $s (@Stat) {
if ($s = ~/^#/) { next; }
@Stat1=(@Stat, $s)
}
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Удаление лишних строк из массива"
Сообщение от konst emailИскать по авторуВ закладки on 20-Фев-03, 13:46  (MSK)
>Уважаемые господа подскажите пожалуйста как вырезать из массива строки начинающиеся на #.
>Неделю бъюсь ничего не получается.
>Пример:
>#!/usr/bin/perl
>@Stat = ('
>#Timing mark 31626411. Interval 03:07
>#1000 entries of 1000
>#Dropped 533573 bytes
>#src dst bytes
>xxxxxxxx      xxxxxxxxxxxxx
>xxxxxxxx      xxxxxxxxxxxxx
>#end');
В этом случае массив Stat содержит 1 элемент (строку с переводами строк)
Все заработает если добавить
@Stat = split("\n",$Stat[0]);
Но проблема вероятно в неверном понимании массива

>foreach $s (@Stat) {
#$s == "\n#Timing mark 31626411. Interval 03:07\n...\nxxxxxxxx      xxxxxxxxxxxxx\n....";
>if ($s = ~/^#/) { next; }
>@Stat1=(@Stat, $s)
>}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Удаление лишних строк из массива"
Сообщение от agat Искать по авторуВ закладки on 20-Фев-03, 14:45  (MSK)
Прошу прощения сделал ошибку в самом начале, там должно было быть:

@Stat = split(/\n/, '#Timing mark 31626411. Interval 03:07
...........................

Так вот как правильно составить резулярное выражение для поиска и удаления строк, начинающихся с #?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Удаление лишних строк из массива"
Сообщение от konst emailИскать по авторуВ закладки on 20-Фев-03, 15:21  (MSK)
>Прошу прощения сделал ошибку в самом начале, там должно было быть:
>
>@Stat = split(/\n/, '#Timing mark 31626411. Interval 03:07
>...........................
>
>Так вот как правильно составить резулярное выражение для поиска и удаления строк,
>начинающихся с #?


if ($s = ~/^#/) { next; }
- это правильно!
можно также unless ($s = ~/^#/) {
push(@Stat1, $s); # добавляет $s в @Stat1
}
включить в массив: perldoc -f push
исключить : perldoc -f splice

@Stat1=(@Stat, $s) - НЕ ВЕРНО!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: Удаление лишних строк из массива"
Сообщение от agat Искать по авторуВ закладки on 20-Фев-03, 15:35  (MSK)
>if ($s = ~/^#/) { next; }
>- это правильно!
>можно также unless ($s = ~/^#/) {
>push(@Stat1, $s); # добавляет $s в @Stat1
>}

А с этого места можно поподробнее, что это за функции?
>включить в массив: perldoc -f push
>исключить : perldoc -f splice
>


  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: Удаление лишних строк из массива"
Сообщение от agat Искать по авторуВ закладки on 20-Фев-03, 15:43  (MSK)
И еще вопрос

foreach $s (@Stat) {
if($s=~/^#/) {
push(@Stat1, $s);
}
}

Массив @Stat1 в данном случае будет содержать строки которые начинаюся с #, а как правильнее получить массив который не содержит данных строк?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: Удаление лишних строк из массива"
Сообщение от konst emailИскать по авторуВ закладки on 20-Фев-03, 15:52  (MSK)
>И еще вопрос
>
>foreach $s (@Stat) {
>if($s=~/^#/) {
>push(@Stat1, $s);
>}
>}
>
>Массив @Stat1 в данном случае будет содержать строки которые начинаюся с #,
>а как правильнее получить массив который не содержит данных строк?

Вместо if($s=~/^#/) {

unless ($s=~/^#/) {
ИЛИ
if($s !~ /^#/) {

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: Удаление лишних строк из массива"
Сообщение от agat Искать по авторуВ закладки on 20-Фев-03, 15:57  (MSK)
Большое спасибо за консультации!
Будем юзать дальше.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: Удаление лишних строк из массива"
Сообщение от konst emailИскать по авторуВ закладки on 20-Фев-03, 15:44  (MSK)
>>if ($s = ~/^#/) { next; }
>>- это правильно!
>>можно также unless ($s = ~/^#/) {
>>push(@Stat1, $s); # добавляет $s в @Stat1
>>}
>
>А с этого места можно поподробнее, что это за функции?
>>включить в массив: perldoc -f push
>>исключить : perldoc -f splice
Ты имеешь ввиду perldoc ? - Очень полезная функция.
Если у тебя *nix => в bash'е дай эти команды. Открывает man по Перлу. (Выход : 'q').
+ пользуйся
man perl
man perlfunc
(все из shell вызывается)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру