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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача аргументов в скрипт, Скрипт не получает аргумент!!! 
V
    Опции темы
Marlik
Дата 2.1.2008, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Довольно-таки простая задачка но что-то не работает. 
Нужно из одного скрипта вызвать другой и передать ему параметр.
Скрипт вызывается через require и что самое интересное скрипт запускается но аргументов не получает
и где я ошибаюсь???  smile 

Вот первый скрипт: success.pl

Код

#!C:\perl\bin\perl -w
require "enter2.pl";
use strict;
use CGI::Carp 'fatalsToBrowser';
use CGI qw(:standard);
my $cgi = new CGI;


print $cgi->header(-charset => 'Windows-1251');

my $sid = "517a6fea753aa65ee023b7e72204fd7c";

enter2("$sid");

exit();


Он вызывает второй и передает ему параметр-строку.
Тот вызывается но аргументов ноль. Вот его код: enter2.pl

Код

#!C:\perl\bin\perl -w
use strict;
use CGI::Carp 'fatalsToBrowser';
use CGI qw(:standard);
my $cgi = new CGI;

print $cgi->header(-charset => 'Windows-1251');

my $sid = @_[0];

if($sid){

print "yyyyyyyyyyyyyyyeeeeeeeeeeeeeeeessssssssssssss!!!!!!!!!!!!!!!!!!!!!";

print "$sid";

}else{

print "nnnnnnnnnnnnnnnooooooo!!!!!!!!!!!!!!!!!!!!";

}

exit();



Простецкая задачка а никак не получается. И еще если во втором скрипте выставить 1; то тоже ошибка выскакивает. Вот как она выглядит:
Код

Undefined subroutine &main::enter2 called at c:\PROGRA~1\APACHE~1\apache\site\PUBLIC~1\cgi-bin\success.pl line 13.


 smile Помогите плз!!!
PM WWW Skype   Вверх
Ramirez
Дата 2.1.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

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



вы вызываете функцию enter2("$sid");

но у вас нет такой функции, очем и сообщает ошибка
PM ICQ   Вверх
Marlik
Дата 3.1.2008, 03:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Тут я разобрался, глюк какой-то был, но проблема осталась, тут еще такая фигня после вызова скрипта enter2("$sid") с передачей ему аргумента, скрипт enter2.pl отработав возвращает управление в success.pl и этот скрипт получается запускается повторно, вот наверно с этим глюк и связан был, ну это ладно решил просто в success.pl вызывать функции из enter2.pl, получается, но аргументы все равно не передаются. В общем задачка из простой превратилась в архисложную.  smile 

А задачка была простой ведь.

1. Из success.pl  вызвать enter2.pl и передать ему строку.
2. success.pl  должен(желательно) завершится.
3. enter2.pl отработав тоже должен завершится(желательно) не возвращая результат.

Но так как это не пролезет тогда вариант остается такой:

1. Из success.pl  вызвать функцию из enter2.pl и передать ей строку.
2. Функция из enter2.pl отработав возвращает результат.
3. success.pl  завершается.

Но вот только почему не передается строка?  smile 
PM WWW Skype   Вверх
Marlik
Дата 3.1.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Мда, Перл не совершенен, может действительно устроить запись/чтение в/из файла?
 
Но как-то по ламерски это.

 Или попробовать вызвать скрипт post или get запросом?

Пишите у кого какие мысли на этот счет. Спасибо.
PM WWW Skype   Вверх
nitr
Дата 3.1.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Marlik, вам же ответили...
Вы совершенно всё неверно написали, какие вы аргументы получаете совсем неверно, вы будто в каком-то ином языке работаете smile)

Лучше прочесть как минимум 2-е книги по Perl.

Вот как должен выглядить enter2.pl
Код

#!C:\perl\bin\perl -w
use strict;
use CGI::Carp 'fatalsToBrowser';
use CGI qw(:standard);
my $cgi = new CGI;

print $cgi->header(-charset => 'Windows-1251');

sub enter2 {
    my $sid = shift;
    if($sid) {
        print "yyyyyyyyyyyyyyyeeeeeeeeeeeeeeeessssssssssssss!!!!!!!!!!!!!!!!!!!!!";
        print "$sid";

    } else {
        print "nnnnnnnnnnnnnnnooooooo!!!!!!!!!!!!!!!!!!!!";

    }
}


Добавлено через 1 минуту и 11 секунд
только зачем ему
Цитата

use CGI::Carp 'fatalsToBrowser';
use CGI qw(:standard);
my $cgi = new CGI;

print $cgi->header(-charset => 'Windows-1251');

По моему мнению чушь smile Но решать вам, ваша программа.


--------------------
PM   Вверх
Marlik
Дата 3.1.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



nitr спасибо.    smile    Про эту фигню сто раз прочитал, но никак въехать не мог, как там на самом деле, тем более глюки всяко разно, вот к примеру такой код:

Код

#!C:\perl\bin\perl -w
require "enter2.pl";
use strict;
use CGI::Carp 'fatalsToBrowser';
use CGI qw(:standard);
my $cgi = new CGI;


print $cgi->header(-charset => 'Windows-1251');

my $sid = "517a6fea753aa65ee023b7e72204fd7c";

exit();

вызывает почему-то enter2.pl без разрешения, а так как уже сутки ковыряюсь то в голове кавардак.


Цитата

По моему мнению чушь  Но решать вам, ваша программа. 


А там просто куски кода остались не все вырезал, на самом деле скрипт строк на триста, просто вырезал что-то, с чем эксперементировал что-то осталось...  Спасибо.  smile 
PM WWW Skype   Вверх
nitr
Дата 3.1.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Цитата(Marlik @  3.1.2008,  14:59 Найти цитируемый пост)
вызывает почему-то enter2.pl без разрешения

почему это? smile
Цитата
require "enter2.pl";

оно и вызывает smile

Вам наверное стоит пересмотреть вашу реализацию задачи smile Возможно стоит писать с помощью модулей...


--------------------
PM   Вверх
Marlik
Дата 3.1.2008, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну да, скрипт которому передаются параметры еще вызывается и post-ом там примерно вот из за этого куска:

Код

print $cgi->header(-charset => 'Windows-1251');
print $cgi->start_html();  

if( defined $cgi->param('par1') ){
fun1();
}elsif( defined $cgi->param('par2') ){
fun2();
}elsif( defined $cgi->param('par3') ){
fun3();
}elsif( defined $cgi->param('par4') ){
fun4();
}else {
fun5();
}
print $cgi->end_html();   


Решил пока вот так сделать:

Код


#!/usr/bin/perl -w
use strict;
use LWP::Simple;
use CGI::Carp 'fatalsToBrowser';
use CGI qw(:standard);
my $cgi = new CGI;

print $cgi->header(-charset => 'Windows-1251');

my $sid = $cgi -> param('sid');    
    
my $doc = get("http://www.domen.ru/cgi-bin/enter2.pl?sid=$sid");

print "$doc";

exit();


PM WWW Skype   Вверх
nitr
Дата 3.1.2008, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Marlik, не знаю зачем вам exit();

А так как вы пишите cg-скрипты, то этот вариант более правильный!


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


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

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


 




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


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

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