Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача параметров в perl-скрипт 
:(
    Опции темы
Suppir
Дата 6.4.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Для примера:

Пишу в AutoIt "ShellExecute("parse.pl", "1")"
т.е. запустить parse.pl с параметром 1

В parse.pl пытаюсь поймать этот параметр:

print $ARGV[0];


Однако STDERR мне выдает:
Can't open 1: No such file or directory at C:\!яЁюуЁрьь√\AutoIt + Perl\parse.pl line 4.


В чем может быть причина?

Это сообщение отредактировал(а) Suppir - 6.4.2010, 14:42
PM MAIL   Вверх
Egik2
Дата 6.4.2010, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 29.7.2008
Где: Агудзера

Репутация: 1
Всего: 11



Посмотри на ошибку:
Код

Can't open 1: No such file or directory at C:\!яЁюуЁрьь√\AutoIt + Perl\parse.pl line 4.


То есть не может найти файл 1 в самом скрипте parse.pl на строке 4.
Покажи что за код на 4 строке.


--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
shamber
Дата 6.4.2010, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Egik2, скорее всего код открытия файла smile
PM MAIL Jabber   Вверх
Suppir
Дата 6.4.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



Egik2. Вот весь au3-файл (одна строка):
ShellExecute("parse.pl", "1")

Вот весь pl-файл *(две строки):
open(STDERR, ">$0.log");
print $ARGV[0]; <>;


Если я не сошел с ума smile, то au3-файл запускает в своей директории файл parse.pl с параметром 1.
И он действительно запускает. А parse.pl выдает "Can't open 1: No such file or directory at C:\!яЁюуЁрьь√\AutoIt + Perl\parse.pl line 2."

Т.е. ошибка в коде "print $ARGV[0]; <>;"

Добавлено @ 14:36
p.s. делаю небольшую прогу, которая парсит файлы и засовывает полученные данные в SQLite, затем показывает логические ошибки. Парсер написан на Perl, а GUI на AutoIt. И нужно между ними передавать параметры и данные. 

Это сообщение отредактировал(а) Suppir - 6.4.2010, 14:39
PM MAIL   Вверх
Egik2
Дата 6.4.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 29.7.2008
Где: Агудзера

Репутация: 1
Всего: 11



Ты уверен, что правильно передал содержимое скрипта?  smile 

Код

print $ARGV[0];

 печатает первый аргумент твоего скрипта.
Код

<>;

Читает строку из стандартного ввода, если ее нет, ждет пока что-нибудь не 
появится.

То есть по идее здесь твоей ошибки быть никак не может.



--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
Suppir
Дата 6.4.2010, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



"Ты уверен, что правильно передал содержимое скрипта?" - да.

<> добавил, чтобы увидеть что напечает Perl. Но так как завершилось с ошибкой, добавил еще open(STDERR, ">$0.log");


PM MAIL   Вверх
amg
Дата 6.4.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(Suppir @  6.4.2010,  15:52 Найти цитируемый пост)
<> добавил, чтобы увидеть что напечает Perl. 
Хм. Так ведь оператор <>, когда ему ничего не передают через stdin, как раз и пытается читать файлы, имена котороых приведены в аргументах.
PM MAIL   Вверх
Suppir
Дата 6.4.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



amg, да, точно! Проблема решилась!

а я в 99% случаев использую <> просто для паузы.
PM MAIL   Вверх
Pr1zrak800
Дата 27.9.2010, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.9.2010

Репутация: нет
Всего: нет



Подскажите пожайлуста как выложенный в каталог webserver`a *.pl скрипт  запустить с атрибутами из браузера.  Вот шапка скрипта 
Код

#!/usr/bin/perl
use HTTP::Cookies;
$myCookies = HTTP::Cookies->new();
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
   $ua->cookie_jar($myCookies);
   $ua->agent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.4');
push @{$ua->requests_redirectable}, 'POST';

if(@ARGV!= 2){&usage;}
else{
my $loginlist = $ARGV[0];
my $resultlist = $ARGV[1];


Я создал 2 файла. теперь нужно както запусить передать через адресную строку браузера скрипт интерпритатору с 2 параметрами 1.txt и 2.txt. 



M
JackYF
Не забываем пользоваться кнопкой "Код".

PM MAIL   Вверх
ming
Дата 28.9.2010, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 30.1.2009
Где: Новосибирск

Репутация: 2
Всего: 3



в адресной строке http://myhost/script.pl?param1=value1&param2=value2

Код

use CGI;
my $cgi = CGI->new;
if ($cgi->param('param1')) {
    my $value1 = $cgi->param('param1');
    .....
}
if ($cgi->param('param2')) {
    my $value2 = $cgi->param('param2');
    .....
}


либо вручную парсить в скрипте значение переменной $ENV{'QUERY_STRING'}
PM MAIL ICQ Jabber   Вверх
Pr1zrak800
Дата 28.9.2010, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.9.2010

Репутация: нет
Всего: нет



Спасибо ming.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1976 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.