Forum Webscript.Ru
Программирование => Perl => Тема начата: perl novice от 31 Мая 2007, 19:19:58
-
Всем привет! Есть у меня на D:\\1\\234\\432\\234\\234\\2342\\234\\23423\\adm_script.pl - перловый скрипт. А хотелось бы на рабочем столе сделать *.bat файл, что бы он запускал мой скрипт. Подскажите как это сделать? То есть, что должно быть написано в батнике? Заранее спасибо!
-
perl D:\\1\\234\\432\\234\\234\\2342\\234\\23423\\adm_script.pl
-
Спасибо, но не рабоает! Пишет: Can\'t locate anEnv.pm in @INC (@INC contains....
-
наверное у вас нет anEnv.pm в @INC.
поставте его.
-
как это в батниге прописать?
-
@ECHO "наверное у вас нет anEnv.pm в @INC."
@ECHO "поставте его."
-
arto
наверное у вас нет anEnv.pm в @INC.
поставте его.
Не надо пользователей в заблуждение вводить...
Ты сам-то сможешь в @INC его занести?
perl novice
У тебя просто нет модуля anEnv.pm, либо в скрипте не прописан use lib к папке где он лежит...
-
запросто:
# print -l "package anEnv;" "1;" > $(perl -e "print \\$INC[0];")/anEnv.pm
# perl -ManEnv -e "exit;"
#
-
arto
Остроумно, но не правильно...
perldoc lib
P.S. В @INC ты его реально не занес, оценка - 2
-
really?
а почему сработало?
-
arto
1.
А я не сказал, что работать не будет.
Вопрос не в работоспособности, а в философии.
Свои собственные модули, предназначенные для одного проекта выкладывать в одну из папок(!) @INC - не совсем правильно.
Тем паче, как это сделал ты. :-)
2.
в @INC хранится список папок где расположены модули, точнее где Perl их будет искать.
Я для тебя америку открыл? Нет, а вот товарищу который вопрос задал - да.
3. Товарищу perl novice совсем не поможет твой код, уверен, что он просто скопирует его себе в командную строку. Да... ошибка первая у него пропадет, но породит кучу остальных...
Медвежью услугу оказываете товарисч...
-
1. @INC -- неправильно? а чем именно неправильно?
"P.S. В @INC ты его реально не занес" -- ?
2. и чего?
3. какие ошибки появятся?
ps. задание на дом -- что делает use lib с @INC.
-
arto
1. Что хранится в @INC? И возможно ли в @INC добавить отдельный модуль?
Кстати, ты своей командной строкой модуль не в @INC запихивал а вызывал первый элемент этого массива, что бы определить путь.
Смекаешь?
2. И того
3. Когда он начнет вызывать методы этого модуля.
P.S. Я знаю что делает use lib, а ты?
-
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
-
arto
1. Так вот и не путайте теполое с мягким... Значит все-таки не в @INC а в один из каталогов;
2. Еще раз повторяю, что не говорил, что Ваш код, товарисч, не работает;
3. Ага, уже исправлять начали, добавлять. Только вот вопрос, а если он уже реально существует как anEnv.pm где-то, что же делать тогда?
P.S. И как perldoc помог?
P.P.S. Демагогию, предлагаю пректатить, ибо тема не пиписьками меряться...
Если хочешь померяться, заводи тему во флейме...
Решение как таковое:
1. Найти файл anEnv.pm;
2. В скрипте прописать:
use lib \'[абсолютный(!) путь папки где лежит anEnv.pm]\';
3. И нефиг его копировать в одну из папок массива @INC.
-
1. думаю, что профессиональные разработчики понимают написанное, а остальные не интересуют.
2. если работает -- в чем дело-то?
3. вы о чем? какая проблема с вызовом методов?
ps. это я вам написал.
pps. сразу надо было думать.
-
arto
1.
Спасибо, но не рабоает! Пишет: Can\'t locate anEnv.pm in @INC (@INC contains....
У профессионального разработчика не возникло бы такого вопроса.
И я как разработчик понял что вы предлагаете неправильный вариант. Потому как - модули созданные в рамках определенного проекта, должны находиться в проекте а не в системных папках. Надеюсь, это у Вас не вызывает сомнений?
2. В том, что Ваш способ не решает проблемы;
3. Проблема в том, что у него существует этот файл. Вы же предлагаете создать новый. Вопрос - а зачем?
P.S. Вам бы тоже тогда почитать не мешает...
P.P.S. О чем? я такое решение предложил изначально...
-
1. вызывает. модули должны лежать там, куда их положил разработчик.
2. где это видно? я и так вам показал, что работает, и эдак. укажите тогда ошбку.
3. где это видно? пока видно, что его нет.
ps. ну и? в обих случаях модуль будет лежать в @INC в результате.
pps. вроде вы флейм развели, затем захотели закончить. хозяин -- барин.
-
arto
1.
вызывает. модули должны лежать там, куда их положил разработчик.
Браво! А я думал они сами разбегаются по компу, что потом искать приходится...
2. Ошибка как минимум в том, что Вы создаете новый файл anEnv.pm. Дальше продолжать?
3. "Профессиональные" разработчики сначала в скрипте вызывают и использую модуль, а потом его создают? увы, не знал...
P.S. В @INC что лежит-то? Поподробнее пожалуйста...
P.P.S. Я флейм развел? Волну не гоните... ;-)
arto:
@ECHO "наверное у вас нет anEnv.pm в @INC."
@ECHO "поставте его."
-
1. значит мы пришли к консенсусу.
2. не подскажете ли, где лежит старый? и, кстати, какая проблема с вызовами методов?
3. вам многое предстоит узнать. наверное, вы молодой разработчик :)
ps. пожалуйста: ls -alF $(perl -e \'print "@INC"\'), думаю, что разберетесь.
pps. что там именно неверно?
-
arto
2. Может его сначала стоит поискать, а потом уже создавать новый, если не нашли?
3. Быть может, не в это суть...
P.S. А врать нехорошо...
В массиве @INC перечислены каталоги в которых Perl ищет модули...
И нет там никакого списка файлов... нет... только список каталогов...
Или Вы скажете, что "ls -alF" это случайность?
-
2. где мне посоветуете поискать, на гугле?
ps. где ложь? вы команду попробовали? или теоретически?
# ls -alF $(perl -e \'print "@INC"\') | wc -l
1080
#
-
arto
2. Вопрос риторический... и не по существу...
P.S. Ложь в том, что эта команда выводит не содержимое @INC а содержимое папок указаных в @INC. При этом хотите сказать, что в @INC кроме папок есть что-то еще...
Я не сомневаюсь, что команду Вы набрали правильно и что ошибку она не выдаст, так же как не выдаст и содержание массива @INC в чистом виде...
-
2. вы, наверное, не заметили мой совет "наверное у вас нет anEnv.pm в @INC. поставте его."
ps. а, понял. начали придираться к терминологии. неплохо, неплохо. т.е. по сути дела уже сказать нечего? :)
-
arto
Это не терминология, это ошибка...
Добавить в массив @INC модуль, или расположить его так, что бы он находился в одной из папок перечисленных в массиве @INC - две разные вещи, не только по смыслу, но и по действиям...
Вам, как "Профессиональному" разработчику - это должно быть понятно...
Мне же, как "Обычному" разработчику, только придираться...
Можно, конечно рака назвать ежом, а потом говорить, что и так всем понятно, что Вы имели ввиду...
А по сути. Еще раз:
Модуль переносить (копировать, создавать) не в один(ом) из каталогов массива @INC, а добавить в массив @INC каталог локальных (проектных) модулей c помощью прагмы lib.
Не Вам ли, как "профессиональному" разработчику не понимать, что поддержка и обновление проекта осуществляется проще, если все расположено в одном месте, а не разбросано по всему серверу...
-
слава богу, что вы признали свою неопытность и придирчивость.
-
arto
[OFF]
Завираетесь батенька,
Я ничего не признавал...
[/OFF]
-
Phoinix:
Вам, как "Профессиональному" разработчику - это должно быть понятно... Мне же, как "Обычному" разработчику, только придираться...
:)
-
arto
[OFF]И Вы еще спрашиваете, а при чем тут опыт???
Снова, что-то Вы снова между строк читаете и пишите...
Как тогда понимать слово "неопытность"?
О которой, кстати, не Вам судить...[/OFF]
-
Всем привет!!! Я сделал просче переставил Perl и все заработало. Проблема в другом: мой скрипт adm_script.pl запускается с входными параметрами, то есть в командной строке "adm_script.pl -user0001", после выполнения которого возвращается за скока времени в секундах он отработал. Моя задача - запустить этот скрипт 20 раз параралельно (то есть одновремено) но с разными парметрами. То есть adm_script.pl -user0001, adm_script.pl -user0002 .... adm_script.pl -user0020. Как это реализовать?
-
Вообще что за странный подход... Если уж используете Перл, то и запускать надо из скрпта на Перл. Долой всякие Bat-ники...
-
sd1074
Без .bat файла - никуда, задание почитайте...
perl novice
perldoc -f fork
-
Phoinix:
Без .bat файла - никуда, задание почитайте...
Дааа??? Объясниете ка мне пожалуйста, почему же это так? Взять и прописать, что поумолчанию для файлов с расширением пл запускается перл.
-
vladsu
Спрашивается, почему у меня по умолчанию для файлов с расширением .pl запускается редактор?
Наверно так удобней...
-
Phoinix:
Наверно так удобней...
Мы же не будем спорить о вкусах?
Здесь спрашивают о решениях, а не о Ваших предпочтениях, с таким же успехом Вы можете и батник по двойному клику на редактор натравить, но это исключительно Ваше предпочтение! А !!!мне!!! так не удобно и у меня есть на это объяснение, я чаще запускаю и реже правлю, и если мне нужно поправить, то я нажму правую кнопку и выберу "Открыть с..." чем пожелаю. Сколько людей столько мнений.
Поэтому будьте внимательней, прежде, утверждая:
Phoinix:
Без .bat файла - никуда, задание почитайте...
-
vladsu
Здесь спрашивают о решениях, а не о Ваших предпочтениях...
Оригинально...
Да, можно вообще *nix поставить, тогда и прописывать ничего не надо будет.
Только решения этого никакого не даст...
Объясните уважаемый, как мне поможет Ваше
Взять и прописать, что поумолчанию для файлов с расширением пл запускается перл
В проблеме:
... запустить этот скрипт 20 раз параралельно (то есть одновремено) но с разными парметрами...
Давайте уже говорить по существу?
[OFF]Один чувак пришел, насрал комментарий практически не в тему, и началось её обсуждение...[/OFF]
P.S. Вы батенька про шелловские скрипты не слышали ниразу?