The OpenNET Project / Index page

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

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

"Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 10:44  (MSK)
#!/usr/bin/perl -w

$logfile = pppd.log;

open(LOGFILE, $logfile) or die " Can not open file\n";
#       push(@PID, $1) while m!\bpppd[(\d+)!g
        printf "$1\n" while m!\bpppd\[(\d+)!g;
close(LOGFILE);

Получаю

natan# ./ppp.pl
Unquoted string "pppd" may clash with future reserved word at ./ppp.pl line 3.
Use of uninitialized value at ./ppp.pl line 3.
Can't take log of 0 at ./ppp.pl line 3.
natan#

Что ему надо

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

 Оглавление

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

1. "Perl скрипт"
Сообщение от Morpheus emailИскать по авторуВ закладки on 26-Мрт-04, 10:54  (MSK)
>#!/usr/bin/perl -w
>
>$logfile = pppd.log;
>
>open(LOGFILE, $logfile) or die " Can not open file\n";
>#       push(@PID, $1) while m!\bpppd[(\d+)!g
>        printf "$1\n" while m!\bpppd\[(\d+)!g;
>
>close(LOGFILE);
>
>Получаю
>
>natan# ./ppp.pl
>Unquoted string "pppd" may clash with future reserved word at ./ppp.pl line
>3.
>Use of uninitialized value at ./ppp.pl line 3.
>Can't take log of 0 at ./ppp.pl line 3.
>natan#
>
>Что ему надо

в кавычки поставь pppd.log в третьей строке

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

2. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 11:00  (MSK)
Поставил теперь ругается
Use of uninitialized value at ./ppp.pl line 7.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Perl скрипт"
Сообщение от Andrek emailИскать по авторуВ закладки on 26-Мрт-04, 11:08  (MSK)
>Поставил теперь ругается
>Use of uninitialized value at ./ppp.pl line 7.
это ругательство обращено к m//, ты пытаешься прицепить регулярное выражение к $_ а ее у тебя нету
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 11:19  (MSK)
Точно справился с этим, а как сказать что бы строке совпало и то и другое
  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Perl скрипт"
Сообщение от Andrek emailИскать по авторуВ закладки on 26-Мрт-04, 11:22  (MSK)
поставь "то""и другое" рядом
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Perl скрипт"
Сообщение от Viktor Искать по авторуВ закладки on 26-Мрт-04, 11:18  (MSK)
$logfile = 'pppd.log';


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

7. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 11:38  (MSK)
#!/usr/bin/perl -w

$logfile="pppd.log";

open(LOGFILE, $logfile) or die " Can not open file\n";
        while (<LOGFILE>)
                {
                next unless m/\bLeo\b.+\bsucceded\b/;
        push @num, $1 while m!\bpppd\[(\d+)!g;
#               printf "$1\n" while m/\bpppd\[(\d+)/g;
                }
close (LOGFILE) or die " ";

Хочется что бы в массив добавлялось
а пишет
Name "main::num" used only once: possible typo at ./ppp.pl line 9.

Как с этим бороться?

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

8. "Perl скрипт"
Сообщение от andrek emailИскать по авторуВ закладки on 26-Мрт-04, 11:44  (MSK)
> push @num, $1 while m!\bpppd\[(\d+)!g;

while =! if

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

9. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 11:51  (MSK)
Куда ты мне предлагаешь это сунуть
  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Perl скрипт"
Сообщение от andrek emailИскать по авторуВ закладки on 26-Мрт-04, 12:13  (MSK)
>Куда ты мне предлагаешь это сунуть
Перепутал немного.
Определи массив в начале кода my @num;
  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 12:34  (MSK)
#!/usr/bin/perl -w

my @PID;

$logfile="pppd.log";

open(LOGFILE, $logfile) or die " Can not open file\n";
        while (<LOGFILE>)
                {
                next unless m/\bLeo\b.+\bsucceded\b/;
                printf "$1\n" while m/\bpppd\[(\d+)/g;
                push @PID, $1 while m/\bpppd\[(\d+)/g;
                printf "$PID[1]\n";
                };
close(LOGFILE) or die " ";
~        


и такая ошибка

natan# ./ppp.pl
2402
Use of uninitialized value at ./ppp.pl line 13, <LOGFILE> chunk 15.

2328
2328
4558
2328
natan#
С чем связана ошибка?

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

12. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 12:43  (MSK)
Еще вопрос как в Perl удалить строку если в ней найдено совпадение с шаблоном, замену совпадения нашел, а вот как строку удалить?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "Perl скрипт"
Сообщение от DogEater Искать по авторуВ закладки on 26-Мрт-04, 13:49  (MSK)
>Еще вопрос как в Perl удалить строку если в ней найдено совпадение
>с шаблоном, замену совпадения нашел, а вот как строку удалить?

$somevar=~s/somesymbol//g; разьве не работает? или надо строку целиком(совпадение + остаток)?

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

15. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 13:54  (MSK)
Если в строке есть шаблон, строку всю удалить..
К тому же шаблон скалярная переменная дложна браться из массива, т.е сначала шаблон это первый элемент массива, далее второй и такк все строки проверяются с каждым элементом массива
  Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "Perl скрипт"
Сообщение от DogEater Искать по авторуВ закладки on 26-Мрт-04, 14:14  (MSK)
>Если в строке есть шаблон, строку всю удалить..
>К тому же шаблон скалярная переменная дложна браться из массива, т.е сначала
>шаблон это первый элемент массива, далее второй и такк все строки
>проверяются с каждым элементом массива

# массив скидиываем в переменную
$pattern=join "|", @pattern;
while (<>){
  if (/$pattern/){
    s/^.*$//g
  }
}

я правда не уверен в скорости выполнения
btw, ты себе Фриддла купил?

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

17. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 14:21  (MSK)
natan# ./ppp.pl
syntax error at ./ppp.pl line 29, near "^."
  (Might be a runaway multi-line // string starting on line 27)
Scalar found where operator expected at ./ppp.pl line 31, at end of line
  (Might be a runaway multi-line // string starting on line 29)
        (Missing operator before ?)
Search pattern not terminated at ./ppp.pl line 31.
natan#
Кто есть фридл
  Рекомендовать в FAQ | Cообщить модератору | Наверх

18. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 14:29  (MSK)
С ошибкой справился но строки не удаляются
  Рекомендовать в FAQ | Cообщить модератору | Наверх

19. "Perl скрипт"
Сообщение от DogEater Искать по авторуВ закладки on 26-Мрт-04, 14:33  (MSK)
Фриддл - автор книги "Регулярные выражения"

у меня работает(копировал с терминала):
#!/usr/bin/perl
$pattern="one|two";
while (<>){
    if (/$pattern/){
      s/^.*$|\n//g;
    }
    print;
}

именно так  perl 5.6.0

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

20. "Perl скрипт"
Сообщение от DogEater Искать по авторуВ закладки on 26-Мрт-04, 14:39  (MSK)
или проще :-) :

while (<>){
   print if !/$pattern/;
}

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

21. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 14:48  (MSK)
А что у тебя работает? Удаляются строки полностью содержащие или one или two ?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

22. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 14:52  (MSK)
Во смотри, из файла стори не удаляются.. если поставить принт то строки эти становятся пустыми только \n остается, но в файле ничего не меняется
  Рекомендовать в FAQ | Cообщить модератору | Наверх

24. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 15:05  (MSK)
Как можно удалить из массива дублирующие записи
  Рекомендовать в FAQ | Cообщить модератору | Наверх

25. "Perl скрипт"
Сообщение от DogEater Искать по авторуВ закладки on 26-Мрт-04, 16:00  (MSK)
>Как можно удалить из массива дублирующие записи

%seen=();
unique= grep { ! $seen{$_} ++ } @list;

см "Perl. Библиотека программиста" стр 126

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

26. "Perl скрипт"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 26-Мрт-04, 22:07  (MSK)
>>Как можно удалить из массива дублирующие записи
>
>%seen=();
>unique= grep { ! $seen{$_} ++ } @list;
>
>см "Perl. Библиотека программиста" стр 126


Можно пояснить эти строки?

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

27. "Perl скрипт"
Сообщение от DogEater Искать по авторуВ закладки on 29-Мрт-04, 10:22  (MSK)
>>>Как можно удалить из массива дублирующие записи
>>
>>%seen=();
>>unique= grep { ! $seen{$_} ++ } @list;
>>
>>см "Perl. Библиотека программиста" стр 126
>
>
>Можно пояснить эти строки?

книги под рукой сейчас нет

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

28. "Perl скрипт"
Сообщение от DogEater Искать по авторуВ закладки on 29-Мрт-04, 10:29  (MSK)
блин, сабмит сработал ...
основная идея использовать элементы массива в качестве ключей хеша
если ключ не существует, то надо добавить текущий элемент массива как новый ключ хэша и как новый элемент массива уникальных значений

вышепериведённый пример кодf не совсем нагляден... sorry

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

23. "Perl скрипт"
Сообщение от DogEater Искать по авторуВ закладки on 26-Мрт-04, 15:01  (MSK)
>А что у тебя работает? Удаляются строки полностью содержащие или one или
>two ?
у меня не печатаются строки(зачем лишняя работа?)  содержащие любые последовательности в шаблоне (какая раньше совпадёт)
"gone", например, удаляется

[dogeater@someserver dogeater]$ cat target
one
three two
treee
four
gone[dogeater@someserver dogeater]$ cat target |./ppp.pl
treee
four
[dogeater@someserver dogeater]

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

13. "Perl скрипт"
Сообщение от vt Искать по авторуВ закладки on 26-Мрт-04, 12:47  (MSK)
>#!/usr/bin/perl -w
>
>$logfile = pppd.log;
>
>open(LOGFILE, $logfile) or die " Can not open file\n";
>#       push(@PID, $1) while m!\bpppd[(\d+)!g
>        printf "$1\n" while m!\bpppd\[(\d+)!g;
>
>close(LOGFILE);
>
>Получаю
>
>natan# ./ppp.pl
>Unquoted string "pppd" may clash with future reserved word at ./ppp.pl line
>3.
>Use of uninitialized value at ./ppp.pl line 3.
>Can't take log of 0 at ./ppp.pl line 3.
>natan#
>
>Что ему надо

А зачем perl использовать для этих целей вместо awk,
который специально для этого предназначен ?


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


Удалить

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




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

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