The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Perl скрипт, !*! A Clockwork Orange, 26-Мрт-04, 10:44  [смотреть все]
#!/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 скрипт, !*! 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 скрипт, !*! 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 -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#
              С чем связана ошибка?

              • 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,
    который специально для этого предназначен ?




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

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