![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| CrazyDiamond |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.11.2005 Где: Москва Репутация: нет Всего: нет |
Да, я заключаю все параметры в скобки, т.о. обозначаю начало и конец параметра.
Перловый код является небольшим фрагментом шел скрипта. Так что это не совсем командная строка Я не вижу смысла переходить к написанию всего,включая SQL запрос,на перле. Если у меня проблемы с такой элементарщиной, то куда там писать всё на перле....Или я не вижу какой то очевидной причины перехода от шела на перл?
Они передаются строкой $szmhdat=`~/get.szmhdat_new [[[[$te]]]] [[[[$art]]]] [[[[$charge]]]]` Ты хочешь сказать, что их можно передать, указав вмето параметров имя массива(списка), который будет задан строкой выше?И потом не придётся ничего парсить и ломать голову над тем, как их воспринять и разделить? Про интерполяцию переменных я тебе ничего не могу сказать, не знаю что это такое. Хотя может быть и знаю, но под более простым названием |
||||
|
|||||
| korob2001 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Всё верно, но этот код Shell передаёт оболочке, та в свою очередь зупускает отдельнай процесс perl и тот в свою очередь выполняет этот код. Не важно введёшь ты этот кодв терминал или будешь передавать его из Shell. Твой код уже достаточно большой, что бы писать его в отдельном файле.
Всё верно ты делаешь, только скобки убери, примерно будет это выглядеть так:
Зачем такое кол во скобок? Почему не по 10 с каждой стороны?
Это когда переменная подставляет своё значение, а не имя. Например:
Теперь переменная $c содержит строку "Hello, world!\n", но не "$a, $b!\n"; -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||||||
|
|||||||||||
| CrazyDiamond |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.11.2005 Где: Москва Репутация: нет Всего: нет |
Получаю hello world! Так что видимо работает. Только ты пример приводил на перле, а я на шеле.
Ну не в этом суть
Дык если я их уберу, то как их можно будет разделить на первую,вторую, третью...?? Скобки в самих переменных не содержаться. |
||||||
|
|||||||
| korob2001 |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Если ты их уберёшь, тогда нам не нужно будет их обрезать следующим шаблоном. Собственно благодаря ему их и нет в, получающей параметры, программе.
Вот смотри, я твою Perl программу разложил по строкам, теперь давай посмотрим и хорошо подумаем. Что же она делает? И нужна ли она вообще?
Может вообще не нужно ничего и никуда передавать? Ты сам себя запутываешь, зря ты смешиваешь Shell и Perl. Это сообщение отредактировал(а) korob2001 - 25.11.2005, 17:30 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||
|
|||||||
| CrazyDiamond |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.11.2005 Где: Москва Репутация: нет Всего: нет |
Повторяю в энный раз.
Программа A запускается с параметрами в виде трёх переменных. Они содержат примерно вот такую фигню: 610000 ARTIKUL S PROBELOM PARTIA S PROBELOM Т.е. программа запускается вот так: $szmhdat=`~/get.szmhdat_new '$te' '$art' '$charge'`; А фактически: $szmhdat=`~/get.szmhdat_new 610000 ARTIKUL S PROBELOM PARTIA S PROBELOM Задача: Построить в этой программе А SQL запрос, используя переданный номер, артикул и партию. Проблема: как загнать в переменные, для дальнейшего использования, переданные параметры? Вариант решения - передать параметры так, что бы как то можно было понять, где кончается первый параметр и начинается второй. Смысл скобок теперь ясен? Разумеется, для построения запроса они не нужны. Хотелось бы заметить, что не стоит ломать голову, если влом. Я просто думал, что это несколько проще, чем оказалось. |
|||
|
||||
| Kiber_rat |
|
||||||
![]() MACMANIAC ![]() ![]() Профиль Группа: Участник Сообщений: 276 Регистрация: 18.4.2002 Где: Ashdod, Israel Репутация: 7 Всего: 9 |
Так, я уже с трудом понимаю что тебе нужно
Первым параметром скрипт принимает строку аргументов (всю, со скобками) а вторым - номер аргумента который надо вернуть... Далее твой bash:
-------------------- Best regards! @..@_____Ku6ep =*=______\______KPbIC
|
||||||
|
|||||||
| sharq |
|
||||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
CrazyDiamond
Необходимо пробелы, которые встречаются в переменных - экранировать или заменить на какой-нить символ, редко встречающийся в данном контексте. Поэтому вот:
Программа get.szmhdat_new
И далее можно строить SQL-запрос. Это сообщение отредактировал(а) sharq - 28.11.2005, 13:02 -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||||
|
|||||||
| CrazyDiamond |
|
||||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.11.2005 Где: Москва Репутация: нет Всего: нет |
Не работает, возвращает в три строки первый аргумент.
Кроме того Can't locate warnings.pm. Эту строку убрал из кода. И добавил путь к getarg.pl, иначе не находил файл.
Что конкретно ты не понимаешь? Я уже не знаю что можно добавить, поэтому только повторяюсь, пытаясь вновь обрисовать задачу
Уже сто раз писал, чистые параметры имеют вид: 610000 ARTIKUL S PROBELOM PARTIA S PROBELOM Но передаю я их с ограничителями - скобками.
А возвращает всегда первый аргумент. $rt Вы мне вот что скажите...
Вот почему перл эту строчку не обрабатывает?? Тут же всё верно...Если вместо $* просто перечислить параметры как они идут, т.е.
то всё отлично работает, но подставляя переменную $* - не обрабатывает Это сообщение отредактировал(а) sharq - 28.11.2005, 13:25 |
||||||||||||||
|
|||||||||||||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
CrazyDiamond чем тебя не устраивает мой пример, он вполне рабочий!
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| CrazyDiamond |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.11.2005 Где: Москва Репутация: нет Всего: нет |
Я его не видел, когда начал писать ответ.
Я не знаю, как на перле сделать запрос к базе Сейчас пытаюсь записать твой вариант в виде строки в шеле... |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
А тебе не кажется, что за это время, сколько мы тут пытаемся скрестить Shell с Perl, можно было уже 20 раз прочесть документацию по модулям DBI и DBD::Informix? Это сообщение отредактировал(а) korob2001 - 28.11.2005, 14:09 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| CrazyDiamond |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.11.2005 Где: Москва Репутация: нет Всего: нет |
Начинать надо с азов...сначала я хочу разобраться в шеле и в простых вставочках перла.
Кроме того, если до на каждой странице кто то что то не понимает, то уж куда тут до результатов Вот переписал твой код, sharq, для извлечения второга параметра...
...на что мне отвечают: Can't modify scalar ref constructor in substitution at -e line 1, near "s/\^/ /g;" А так всё выглядит правильно....... |
|||
|
||||
| sharq |
|
||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||
|
|||||
| CrazyDiamond |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 21.11.2005 Где: Москва Репутация: нет Всего: нет |
syntax error at -e line 1, near "my =" Execution of -e aborted due to compilation errors.
syntax error at -e line 1, near "=" Execution of -e aborted due to compilation errors. Я вокруг подобного предложения уже который день пляшу...собственно, этот вариант наверное самый короткий, вот только как его правильно записать. |
||||
|
|||||
| Kiber_rat |
|
||||||
![]() MACMANIAC ![]() ![]() Профиль Группа: Участник Сообщений: 276 Регистрация: 18.4.2002 Где: Ashdod, Israel Репутация: 7 Всего: 9 |
По поводу моего кода... Ты говоришь что возвращяет только первый аргумент, а можно узнать в каком виде ты передавал их bash скрипту? В моем примере предполагалось что так:
По поводу последней ошибки про которую ты писал: код perl надо писать в одинарных кавычках.
Это сообщение отредактировал(а) Kiber_rat - 28.11.2005, 20:20 -------------------- Best regards! @..@_____Ku6ep =*=______\______KPbIC
|
||||||
|
|||||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |