Forum Webscript.Ru

Программирование => Perl => Тема начата: perl novice от 31 Мая 2007, 19:19:58

Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: perl novice от 31 Мая 2007, 19:19:58
Всем привет! Есть у меня на D:\\1\\234\\432\\234\\234\\2342\\234\\23423\\adm_script.pl - перловый скрипт. А хотелось бы на рабочем столе сделать *.bat файл, что бы он запускал мой скрипт. Подскажите как это сделать? То есть, что должно быть написано в батнике? Заранее спасибо!
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 31 Мая 2007, 19:30:20
perl D:\\1\\234\\432\\234\\234\\2342\\234\\23423\\adm_script.pl
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: perl novice от 31 Мая 2007, 19:43:33
Спасибо, но не рабоает! Пишет: Can\'t locate anEnv.pm in @INC (@INC contains....
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 31 Мая 2007, 22:09:06
наверное у вас нет anEnv.pm в @INC.
поставте его.
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: perl novice от 01 Июня 2007, 13:51:21
как это в батниге прописать?
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 01 Июня 2007, 13:59:46
@ECHO "наверное у вас нет anEnv.pm в @INC."
@ECHO "поставте его."
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 01 Июня 2007, 18:19:47
arto
Цитировать
наверное у вас нет anEnv.pm в @INC.
поставте его.

Не надо пользователей в заблуждение вводить...
Ты сам-то сможешь в @INC его занести?

perl novice
У тебя просто нет модуля anEnv.pm, либо в скрипте не прописан use lib к папке где он лежит...
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 01 Июня 2007, 20:21:55
запросто:

# print -l "package anEnv;" "1;" > $(perl -e "print \\$INC[0];")/anEnv.pm
# perl -ManEnv -e "exit;"
#
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 04 Июня 2007, 17:21:41
arto

Остроумно, но не правильно...

perldoc lib

P.S. В @INC ты его реально не занес, оценка - 2
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 04 Июня 2007, 21:47:45
really?
а почему сработало?
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 06 Июня 2007, 12:00:29
arto
1.
А я не сказал, что работать не будет.
Вопрос не в работоспособности, а в философии.
Свои собственные модули, предназначенные для одного проекта выкладывать в одну из папок(!) @INC - не совсем правильно.
Тем паче, как это сделал ты. :-)

2.
в @INC хранится список папок где расположены модули, точнее где Perl их будет искать.
Я для тебя америку открыл? Нет, а вот товарищу который вопрос задал - да.

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

Медвежью услугу оказываете товарисч...
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 06 Июня 2007, 13:05:49
1. @INC -- неправильно? а чем именно неправильно?
"P.S. В @INC ты его реально не занес" -- ?

2. и чего?

3. какие ошибки появятся?

ps. задание на дом -- что делает use lib с @INC.
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 06 Июня 2007, 13:12:43
arto
1. Что хранится в @INC? И возможно ли в @INC добавить отдельный модуль?
Кстати, ты своей командной строкой модуль не в @INC запихивал а вызывал первый элемент этого массива, что бы определить путь.
Смекаешь?

2. И того

3. Когда он начнет вызывать методы этого модуля.

P.S. Я знаю что делает use lib, а ты?
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 06 Июня 2007, 13:43:43
1. список каталогов для поиска модулей. в каталог -- можно.
добавил в каталог. все работает.

2. т.е. работает?

3. ???
# print -l "package anEnv;" "sub aa (@) { print STDERR @_; }" "1;" > $(perl -e "print \\$INC[0];")/anEnv.pm
# perl -ManEnv -e \'anEnv::aa ("test");\'
test
#

ps. perldoc -m lib
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 06 Июня 2007, 13:59:14
arto

1. Так вот и не путайте теполое с мягким... Значит все-таки не в @INC а в один из каталогов;

2. Еще раз повторяю, что не говорил, что Ваш код, товарисч, не работает;

3. Ага, уже исправлять начали, добавлять. Только вот вопрос, а если он уже реально существует как anEnv.pm где-то, что же делать тогда?

P.S. И как perldoc помог?

P.P.S. Демагогию, предлагаю пректатить, ибо тема не пиписьками меряться...
Если хочешь померяться, заводи тему во флейме...

Решение как таковое:

1. Найти файл anEnv.pm;
2. В скрипте прописать:
use lib \'[абсолютный(!) путь папки где лежит anEnv.pm]\';
3. И нефиг его копировать в одну из папок массива @INC.
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 06 Июня 2007, 14:11:54
1. думаю, что профессиональные разработчики понимают написанное, а остальные не интересуют.

2. если работает -- в чем дело-то?

3. вы о чем? какая проблема с вызовом методов?

ps. это я вам написал.

pps. сразу надо было думать.
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 06 Июня 2007, 14:38:45
arto
1.
Цитировать
Спасибо, но не рабоает! Пишет: Can\'t locate anEnv.pm in @INC (@INC contains....

У профессионального разработчика не возникло бы такого вопроса.
И я как разработчик понял что вы предлагаете неправильный вариант. Потому как - модули созданные в рамках определенного проекта, должны находиться в проекте а не в системных папках. Надеюсь, это у Вас не вызывает сомнений?

2. В том, что Ваш способ не решает проблемы;

3. Проблема в том, что у него существует этот файл. Вы же предлагаете создать новый. Вопрос - а зачем?

P.S. Вам бы тоже тогда почитать не мешает...

P.P.S. О чем? я такое решение предложил изначально...
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 06 Июня 2007, 14:58:24
1. вызывает. модули должны лежать там, куда их положил разработчик.
2. где это видно? я и так вам показал, что работает, и эдак. укажите тогда ошбку.
3. где это видно? пока видно, что его нет.

ps. ну и? в обих случаях модуль будет лежать в @INC в результате.

pps. вроде вы флейм развели, затем захотели закончить. хозяин -- барин.
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 06 Июня 2007, 15:11:30
arto
1.
Цитировать
вызывает. модули должны лежать там, куда их положил разработчик.

Браво! А я думал они сами разбегаются по компу, что потом искать приходится...

2. Ошибка как минимум в том, что Вы создаете новый файл anEnv.pm. Дальше продолжать?

3. "Профессиональные" разработчики сначала в скрипте вызывают и использую модуль, а потом его создают? увы, не знал...

P.S. В @INC что лежит-то? Поподробнее пожалуйста...

P.P.S. Я флейм развел? Волну не гоните... ;-)
Цитировать
arto:
@ECHO "наверное у вас нет anEnv.pm в @INC."
@ECHO "поставте его."
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 06 Июня 2007, 15:24:27
1. значит мы пришли к консенсусу.

2. не подскажете ли, где лежит старый? и, кстати, какая проблема с вызовами методов?

3. вам многое предстоит узнать. наверное, вы молодой разработчик :)

ps. пожалуйста: ls -alF $(perl -e \'print "@INC"\'), думаю, что разберетесь.

pps. что там именно неверно?
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 06 Июня 2007, 15:49:37
arto
2. Может его сначала стоит поискать, а потом уже создавать новый, если не нашли?

3. Быть может, не в это суть...

P.S. А врать нехорошо...
В массиве @INC перечислены каталоги в которых Perl ищет модули...
И нет там никакого списка файлов... нет... только список каталогов...
Или Вы скажете, что "ls -alF" это случайность?
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 06 Июня 2007, 16:21:38
2. где мне посоветуете поискать, на гугле?

ps. где ложь? вы команду попробовали? или теоретически?

# ls -alF $(perl -e \'print "@INC"\') | wc -l
1080
#
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 06 Июня 2007, 16:33:24
arto
2. Вопрос риторический... и не по существу...

P.S. Ложь в том, что эта команда выводит не содержимое @INC а содержимое папок указаных в @INC. При этом хотите сказать, что в @INC кроме папок есть что-то еще...

Я не сомневаюсь, что команду Вы набрали правильно и что ошибку она не выдаст, так же как не выдаст и содержание массива @INC в чистом виде...
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 06 Июня 2007, 16:45:21
2. вы, наверное, не заметили мой совет "наверное у вас нет anEnv.pm в @INC. поставте его."

ps. а, понял. начали придираться к терминологии. неплохо, неплохо. т.е. по сути дела уже сказать нечего? :)
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 06 Июня 2007, 17:08:18
arto

Это не терминология, это ошибка...
Добавить в массив @INC модуль, или расположить его так, что бы он находился в одной из папок перечисленных в массиве @INC - две разные вещи, не только по смыслу, но и по действиям...
Вам, как "Профессиональному" разработчику - это должно быть понятно...
Мне же, как "Обычному" разработчику, только придираться...

Можно, конечно рака назвать ежом, а потом говорить, что и так всем понятно, что Вы имели ввиду...

А по сути. Еще раз:
Модуль переносить (копировать, создавать) не в один(ом) из каталогов массива @INC, а добавить в массив @INC каталог локальных (проектных) модулей c помощью прагмы lib.

Не Вам ли, как "профессиональному" разработчику не понимать, что поддержка и обновление проекта осуществляется проще, если все расположено в одном месте, а не разбросано по всему серверу...
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 06 Июня 2007, 17:38:11
слава богу, что вы признали свою неопытность и придирчивость.
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 06 Июня 2007, 17:46:31
arto
[OFF]
Завираетесь батенька,
Я ничего не признавал...
[/OFF]
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: arto от 06 Июня 2007, 19:01:49
Цитировать
Phoinix:
Вам, как "Профессиональному" разработчику - это должно быть понятно... Мне же, как "Обычному" разработчику, только придираться...


:)
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 06 Июня 2007, 19:36:59
arto
[OFF]И Вы еще спрашиваете, а при чем тут опыт???

Снова, что-то Вы снова между строк читаете и пишите...

Как тогда понимать слово "неопытность"?
О которой, кстати, не Вам судить...[/OFF]
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: perl novice от 07 Июня 2007, 19:40:45
Всем привет!!! Я сделал просче переставил Perl и все заработало. Проблема в другом: мой скрипт adm_script.pl запускается с входными параметрами, то есть в командной строке "adm_script.pl -user0001", после выполнения которого возвращается за скока времени в секундах он отработал. Моя задача - запустить этот скрипт 20 раз параралельно (то есть одновремено) но с разными парметрами. То есть adm_script.pl -user0001, adm_script.pl -user0002 .... adm_script.pl -user0020. Как это реализовать?
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: sd1074 от 12 Июня 2007, 18:45:59
Вообще что за странный подход... Если уж используете Перл, то и запускать надо из скрпта на Перл. Долой всякие Bat-ники...
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 13 Июня 2007, 11:42:34
sd1074
Без .bat файла - никуда, задание почитайте...

perl novice
perldoc -f fork
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: vladsu от 13 Июня 2007, 17:12:12
Цитировать
Phoinix:
Без .bat файла - никуда, задание почитайте...


Дааа??? Объясниете ка мне пожалуйста, почему же это так? Взять и прописать, что поумолчанию для файлов с расширением пл запускается перл.
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 13 Июня 2007, 17:24:09
vladsu

Спрашивается, почему у меня по умолчанию для файлов с расширением .pl запускается редактор?
Наверно так удобней...
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: vladsu от 13 Июня 2007, 18:12:40
Цитировать
Phoinix:
Наверно так удобней...


Мы же не будем спорить о вкусах?

Здесь спрашивают о решениях, а не о Ваших предпочтениях, с таким же успехом Вы можете и батник по двойному клику на редактор натравить, но это исключительно Ваше предпочтение! А !!!мне!!! так не удобно и у меня есть на это объяснение, я чаще запускаю и реже правлю, и если мне нужно поправить, то я нажму правую кнопку и выберу "Открыть с..." чем пожелаю. Сколько людей столько мнений.

Поэтому будьте внимательней, прежде, утверждая:
Цитировать
Phoinix:
Без .bat файла - никуда, задание почитайте...
Название: Как заставить *.bat запустить скрипт на perl?
Отправлено: Phoinix от 13 Июня 2007, 18:29:33
vladsu
Цитировать
Здесь спрашивают о решениях, а не о Ваших предпочтениях...

Оригинально...
Да, можно вообще *nix поставить, тогда и прописывать ничего не надо будет.
Только решения этого никакого не даст...

Объясните уважаемый, как мне поможет Ваше
Цитировать
Взять и прописать, что поумолчанию для файлов с расширением пл запускается перл

В проблеме:
Цитировать
... запустить этот скрипт 20 раз параралельно (то есть одновремено) но с разными парметрами...


Давайте уже говорить по существу?

[OFF]Один чувак пришел, насрал комментарий практически не в тему, и началось её обсуждение...[/OFF]

P.S. Вы батенька про шелловские скрипты не слышали ниразу?