The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Perl подскажите плиз, !*! redd, 24-Дек-08, 23:53  [смотреть все]
Нужно в винде в цикле смотреть папку, как только в папке появится файл file нужно вызвать внешнюю программу, вывести на косоль файл обработан, удалить файл file, и снова ждать нового файла.

Подскажите хоть общих черах как это сделать

  • Perl подскажите плиз, !*! redd, 00:24 , 25-Дек-08 (1)
    Почему не могу удалить файл ?????
    system("c:/perl_prog/file");


    то путь не тот то ошибка параметра какого-то, подскажите а кто нить

    • Perl подскажите плиз, !*! redd, 00:26 , 25-Дек-08 (2)

      то есть вот так
      system("del c:/perl_prog/file"); не работает и так уж пробовал и эдак

      • Perl подскажите плиз, !*! TyLLIKAH, 02:41 , 25-Дек-08 (3)
        А слеши в другую сторону пробовал ?
        • Perl подскажите плиз, !*! angra, 06:32 , 25-Дек-08 (4)
          Или файл кем-то открыт, например самим скриптом. В винде удаление открытых файлов невозможно, в отличие от никсов.
          • Perl подскажите плиз, !*! Андрей, 10:46 , 25-Дек-08 (5)
            слеши пробовал в другую сторону, из консоли удаляет без проблем
            • Perl подскажите плиз, !*! angra, 22:32 , 25-Дек-08 (6)
              На прочтение/перевод сообщения об ошибке вас не хватило? Кстати почему unlink не использовать вместо маразма с внешним вызовом, тем более что del это внутренняя  команда cmd, а не внешний бинарь как rm в никсах.
              • Perl подскажите плиз, !*! andrey, 01:28 , 26-Дек-08 (7)
                Спасибо !!!
                О чудо заработало, можь я правда криво сделал для поставленной задачи но работает )))
                while(true)
                {
                sleep 60;
                $file="c:/perl_prog/in" ;
                open (ID,"$file")|| redo;
                    while ($str=<ID>){
                                      $nomer=$str
                                  }
                print "Номер=",$nomer;
                close (ID);
                unlink $file;
                redo;
                }

                Вот что получилось, можь кому пригодится

                • Perl подскажите плиз, !*! angra, 05:41 , 28-Дек-08 (8)
                  >Вот что получилось, можь кому пригодится

                  Дам бесплатный совет, если не хотите чтобы вас считали идиотом, не выкладывайте свои потуги программирования хотя бы ближайшие пару лет. Мало того, что код не имеет практического применения, так еще и большей частью состоит из ошибок.


                  • Perl подскажите плиз, !*! andrey, 09:23 , 28-Дек-08 (9)
                    Ну вообщето код код реально работает на предприятии, и имеет практическое применение.

                    Насчет ошибок не знаю но работает.

                    Не могли бы вы указать на мои ошибки ?

                    • Perl подскажите плиз, !*! angra, 03:52 , 29-Дек-08 (10)
                      Первый урок бесплатно :)
                      >while(true)

                      В принципе нормально, но хватило бы 1 вместо true и нет явного условия выхода из цикла, прерывание программы по ctrl-c это дурной тон
                      >$file="c:/perl_prog/in" ;

                      Использование глобальной переменной. Многократное инициирование одним и тем же значением, должно быть вынесено за пределы цикла.
                      >open (ID,"$file")|| redo;

                      Вы проверяете на возможность открытия, а не на существование, правильно ли это зависит от ТЗ. Использование redo вместо next вызывает неправильное восприятие смысла проверки, что снижает читабельность
                      >    while ($str=<ID>){
                      >                      $nomer=$str
                      >                  }
                      >print "Номер=",$nomer;

                      Опять глобальные переменные причем одна лишняя. Также не понятен смысл всей конструкции, неужели в ТЗ было сказано вывести последнюю строку файла? А что будет если файл окажется пустым вы подумали?
                      >redo;

                      Опять redo причем абсолютно лишнее, ведь после нее идет и так завершение итерации.
                      Итого только три строки из 11 не вызывают нареканий. Чуть не забыл, у вас плывет стиль оформления, что тоже не добавляет коду читабельности.  

                      Неужели вам не стыдно такое показывать? Также добавлю что код написан без flock и скорее всего вы всегда пишете без него, как следствие ваши программы это мины замедленного действия. А вообще весь этот код пишется в одну строку и подобные по сложности однострочники могут писаться админами по несколько десятков за день, причем никто даже не подумает делится такой элементарщиной.

                      P.S. Все мы начинали с нуля, лет пятнадцать назад я тоже мог бы написать подобное. Не стыдно чего-то не уметь, но вот публично демонстрировать невежество, да еще и предлагать его как образец мягко говоря неумно. Чтобы вы подумали про человека, который первый раз в своей жизни забил гвоздь, причем коряво, и теперь спрашивает у окружающих не нужен ли кому-то его бесценный опыт?

                      • Perl подскажите плиз, !*! andrey, 22:47 , 30-Дек-08 (11)
                        Да нет не стыдно, просто пришлось, от безвыходности, ......
                        Ну больше писать не буду тогда ,
                        • Perl подскажите плиз, !*! andrey, 23:06 , 30-Дек-08 (12)
                          Не могу не спросить тогда чем отличается синтаксис запроса в пхп 3 от пхп 5 в update, код в пхп 3 работает , а в пхп 5 нет........

                        • Perl подскажите плиз, !*! angra, 02:33 , 31-Дек-08 (13)
                          Покажите проблемный кусок кода и выдаваемую ошибку. Если про запросы к БД, то синтаксис запросов в основном определяется самой БД, а не языком программирования.
                          Не стоит бросать программирование, если пока плохо получается, умение приходит с опытом. Я когда начинал тоже писал такую чушь(опять таки работающую), что было стыдно глянуть через пару лет.



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

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