- Perl скрипт, Morpheus, 10:54 , 26-Мрт-04 (1)
>#!/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 в третьей строке
- Perl скрипт, A Clockwork Orange, 11:00 , 26-Мрт-04 (2)
Поставил теперь ругается Use of uninitialized value at ./ppp.pl line 7.
- Perl скрипт, Andrek, 11:08 , 26-Мрт-04 (3)
>Поставил теперь ругается >Use of uninitialized value at ./ppp.pl line 7. это ругательство обращено к m//, ты пытаешься прицепить регулярное выражение к $_ а ее у тебя нету
- Perl скрипт, A Clockwork Orange, 11:19 , 26-Мрт-04 (5)
Точно справился с этим, а как сказать что бы строке совпало и то и другое
- Perl скрипт, Andrek, 11:22 , 26-Мрт-04 (6)
поставь "то""и другое" рядом
- Perl скрипт, Viktor, 11:18 , 26-Мрт-04 (4)
- Perl скрипт, A Clockwork Orange, 11:38 , 26-Мрт-04 (7)
#!/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. Как с этим бороться?
- Perl скрипт, andrek, 11:44 , 26-Мрт-04 (8)
> push @num, $1 while m!\bpppd\[(\d+)!g;while =! if
- Perl скрипт, A Clockwork Orange, 11:51 , 26-Мрт-04 (9)
Куда ты мне предлагаешь это сунуть
- Perl скрипт, andrek, 12:13 , 26-Мрт-04 (10)
>Куда ты мне предлагаешь это сунуть Перепутал немного. Определи массив в начале кода my @num;
- Perl скрипт, A Clockwork Orange, 12:34 , 26-Мрт-04 (11)
#!/usr/bin/perl -wmy @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# С чем связана ошибка?
- Perl скрипт, A Clockwork Orange, 12:43 , 26-Мрт-04 (12)
Еще вопрос как в Perl удалить строку если в ней найдено совпадение с шаблоном, замену совпадения нашел, а вот как строку удалить?
- Perl скрипт, DogEater, 13:49 , 26-Мрт-04 (14)
>Еще вопрос как в Perl удалить строку если в ней найдено совпадение >с шаблоном, замену совпадения нашел, а вот как строку удалить? $somevar=~s/somesymbol//g; разьве не работает? или надо строку целиком(совпадение + остаток)?
- Perl скрипт, A Clockwork Orange, 13:54 , 26-Мрт-04 (15)
Если в строке есть шаблон, строку всю удалить.. К тому же шаблон скалярная переменная дложна браться из массива, т.е сначала шаблон это первый элемент массива, далее второй и такк все строки проверяются с каждым элементом массива
- Perl скрипт, DogEater, 14:14 , 26-Мрт-04 (16)
>Если в строке есть шаблон, строку всю удалить.. >К тому же шаблон скалярная переменная дложна браться из массива, т.е сначала >шаблон это первый элемент массива, далее второй и такк все строки >проверяются с каждым элементом массива # массив скидиываем в переменную $pattern=join "|", @pattern; while (<>){ if (/$pattern/){ s/^.*$//g } } я правда не уверен в скорости выполнения btw, ты себе Фриддла купил?
- Perl скрипт, A Clockwork Orange, 14:21 , 26-Мрт-04 (17)
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# Кто есть фридл
- Perl скрипт, A Clockwork Orange, 14:29 , 26-Мрт-04 (18)
С ошибкой справился но строки не удаляются
- Perl скрипт, DogEater, 14:33 , 26-Мрт-04 (19)
Фриддл - автор книги "Регулярные выражения" у меня работает(копировал с терминала): #!/usr/bin/perl $pattern="one|two"; while (<>){ if (/$pattern/){ s/^.*$|\n//g; } print; } именно так perl 5.6.0 - Perl скрипт, DogEater, 14:39 , 26-Мрт-04 (20)
или проще :-) :while (<>){ print if !/$pattern/; }
- Perl скрипт, A Clockwork Orange, 14:48 , 26-Мрт-04 (21)
А что у тебя работает? Удаляются строки полностью содержащие или one или two ?
- Perl скрипт, A Clockwork Orange, 14:52 , 26-Мрт-04 (22)
Во смотри, из файла стори не удаляются.. если поставить принт то строки эти становятся пустыми только \n остается, но в файле ничего не меняется
- Perl скрипт, A Clockwork Orange, 15:05 , 26-Мрт-04 (24)
Как можно удалить из массива дублирующие записи
- Perl скрипт, DogEater, 16:00 , 26-Мрт-04 (25)
>Как можно удалить из массива дублирующие записи %seen=(); unique= grep { ! $seen{$_} ++ } @list; см "Perl. Библиотека программиста" стр 126
- Perl скрипт, A Clockwork Orange, 22:07 , 26-Мрт-04 (26)
>>Как можно удалить из массива дублирующие записи > >%seen=(); >unique= grep { ! $seen{$_} ++ } @list; > >см "Perl. Библиотека программиста" стр 126 Можно пояснить эти строки?
- Perl скрипт, DogEater, 10:22 , 29-Мрт-04 (27)
>>>Как можно удалить из массива дублирующие записи >> >>%seen=(); >>unique= grep { ! $seen{$_} ++ } @list; >> >>см "Perl. Библиотека программиста" стр 126 > > >Можно пояснить эти строки? книги под рукой сейчас нет
- Perl скрипт, DogEater, 10:29 , 29-Мрт-04 (28)
блин, сабмит сработал ... основная идея использовать элементы массива в качестве ключей хеша если ключ не существует, то надо добавить текущий элемент массива как новый ключ хэша и как новый элемент массива уникальных значенийвышепериведённый пример кодf не совсем нагляден... sorry
- Perl скрипт, DogEater, 15:01 , 26-Мрт-04 (23)
>А что у тебя работает? Удаляются строки полностью содержащие или 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]
- Perl скрипт, vt, 12:47 , 26-Мрт-04 (13)
>#!/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, который специально для этого предназначен ?
|