Forum Webscript.Ru
Программирование => Perl => Тема начата: nobody от 01 Августа 2003, 13:22:55
-
Вопрос просто я передаю скрипту данные
http://www.site.ru/cgi-bin/test.pl?m=2&d=4
Как мне потом использовать данные которые передал, точнее что нужно сделать что бы я мог потом ими манипульровать в скрипте?
P.S. Камни не кидать... Perl незнаю.
-
shell> perldoc CGI
-
use CGI qw/:standard/;
$m = param(\'m\');
$d =param(\'d\');
-
Да читать доки я умею, но времени мало. Спасибо за ответ.
P.S. Гениальный ответ.
Проще было ответить как это сделать
-
[off]...нормально )))[/off]
-
неработает, пишет:
Global symbol "$f" requiresexplict package name at там то
:(
-
use strict;
use CGI qw/:standard/;
my $m = param(\'m\');
my $d =param(\'d\');
-
в адресной строке
test.pl?fff=milka
#### Скрипт ####
use strict;
use CGI qw/:standard/;
my $ffff = param(\'ffff\');
print "Content-Type: text/html\\n\\n";
print $ffff;
-
nobody это вопрос?
-
test.pl?fff=milka
#### Скрипт ####
use strict;
use CGI qw/:standard/;
my $ffff = param(\'ffff\');
-
Ну да, просто не работает, выдает 500 ошибку
-
Надеюсь, у тебя первая строчка скрипта такая?..
#!/путь_до_perl/perl
-
Строчка правильная...
Поскольку
print "Content-Type: text/html\\n\\n";
print "Ok
";
Работает прекрасно.
Ума не приложу в чем дело
-
nobody Полностью весь скрипт в студию.
-
#!c:/www/perl/bin/perl
use strict;
use Spreadsheet::WriteExcel;
use CGI qw/:standard/;
my $ffff = param(\'ffff\');
# Create a new workbook and add a worksheet
my $workbook = Spreadsheet::WriteExcel->new("c:\\\\www\\\\Apache\\\\htdocs\\\\test.xls");
my $worksheet = $workbook->add_worksheet(\'date\');
# Set the column width for columns 1, 2, 3 and 4
$worksheet->set_column(0, 0, 6);
$worksheet->set_column(2, 2, 30);
$worksheet->set_column(3, 3, 10);
$worksheet->set_column(4, 14, 6);
$worksheet->set_column(15, 15, 10);
# Create a format for the column headings
my $header_1 = $workbook->add_format();
$header_1->set_bold();
$header_1->set_size(8);
$header_1->set_align(\'left\');
$header_1->set_color(\'black\');
$header_1->set_align(\'center\');
$header_1->set_align(\'vcenter\');
$header_1->set_rotation(2);
my $header_2 = $workbook->add_format();
$header_2->set_bold();
$header_2->set_size(8);
$header_2->set_align(\'left\');
$header_2->set_color(\'black\');
$header_2->set_align(\'center\');
$header_2->set_align(\'vcenter\');
my $header = $workbook->add_format();
$header->set_bold();
$header->set_size(8);
$header->set_align(\'left\');
$header->set_color(\'black\');
$header->set_align(\'vcenter\');
$header->set_text_justlast(1);
my $column_1 = $workbook->add_format();
$column_1->set_size(8);
$column_1->set_align(\'left\');
$column_1->set_color(\'black\');
$worksheet->merge_range(\'H1:H5\', \'ENK 11000\', $header_1);
$worksheet->merge_range(\'I1:I5\', \'ENK 11000\', $header_1);
$worksheet->merge_range(\'J1:J5\', \'ENK 11000\', $header_1);
$worksheet->merge_range(\'K1:K5\', \'ENK 11000\', $header_1);
$worksheet->merge_range(\'L1:L5\', \'ENK 11000\', $header_1);
$worksheet->merge_range(\'M1:M5\', \'ENK 11000\', $header_1);
$worksheet->merge_range(\'N1:N5\', \'ENK 11000\', $header_1);
$worksheet->merge_range(\'O1:O5\', \'ENK 11000\', $header_1);
$worksheet->write(1, 15, \'AdamSaat\', $header_2);
$worksheet->write(2, 15, \'Gecis\', $header_2);
$worksheet->write(3, 15, \'Onayi\', $header_2);
$worksheet->merge_range(\'A1:B1\', \'Bolge/Tip\', $column_1);
$worksheet->merge_range(\'C1:G1\', \'$f_4\', $header);
$worksheet->merge_range(\'A2:B2\', \'Grup\', $column_1);
$worksheet->merge_range(\'C2:G2\', \'11000 / MERKEZ OFIS\', $header);
$worksheet->merge_range(\'A3:B3\', \'Taseron\', $column_1);
$worksheet->merge_range(\'C3:G3\', \'ENK / ENKA\', $header);
$worksheet->merge_range(\'A4:B4\', \'Ekip Adi\', $column_1);
$worksheet->merge_range(\'C4:G4\', \'00020-MERKEZ OFIS\', $header);
$worksheet->merge_range(\'A5:B5\', \'Ekip Kodu\', $column_1);
$worksheet->merge_range(\'C5:D5\', \'11000ENK20\', $header);
$worksheet->write(5, 0, \'56071\', $header);
$worksheet->merge_range(\'B6:C6\', \'TIMUR TUSUPBEKOV\', $column_1);
$worksheet->write(5, 3, \'SOFOR\', $column_1);
$worksheet->write(5, 4, \'\', $column_1);
$worksheet->write(5, 5, \'\', $column_1);
$worksheet->write(5, 6, \'\', $column_1);
$worksheet->write(5, 7, \'\', $column_1);
$worksheet->write(5, 8, \'\', $column_1);
$worksheet->write(5, 9, \'\', $column_1);
$worksheet->write(5, 10, \'\', $column_1);
$worksheet->write(5, 11, \'\', $column_1);
$worksheet->write(5, 12, \'\', $column_1);
$worksheet->write(5, 13, \'\', $column_1);
$worksheet->write(5, 14, \'\', $column_1);
$worksheet->write(5, 15, \'\', $column_1);
print "Content-Type: text/html\\n\\n";
print "Ok
";
print \'click\';
###############
Пока я не добавляю вот эти строки
use CGI qw/:standard/;
my $ffff = param(\'ffff\');
все работает идеально, после добовления ошибка :(
-
что в error_log?
-
говорится что $ffff неопределенна
-
nobody у тебя по-русски апач логи выдает?
дай лог в оригинале
-
Попробуй так:
use CGI;
$query = new CGI;
$ffff =$query -> param(\'ffff\');
-
Phoinix
А смысл?
Зaтык у него не там совсем.
-
Пробовал непомогает.... :((
И как мне это решить??????
-
Global symbol "$ffff" requires explicit package name at c:\\www\\apache\\cgi-bin\\test.pl line (номер строки)
-
nobody ответить на мои вопрос
-
убери use strict;
работает?
-
nobody
Может не в тему, но у тебя модуль CGI вообще стоит?
Если ставил ActivePerl под винду, то его по-умолчанию нет...
-
Как альтернатива:
$buffer = $ENV{\'QUERY_STRING\'};
if ($ENV{\'REQUEST_METHOD\'} eq "POST") {read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'})}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
$ffff = $FORM{\'ffff\'};
-
Phoinix ты знаешь что вызывает ошибку
"Global symbol "$ffff" requires explicit package name at c:\\www\\apache\\cgi-bin\\test.pl line (номер строки)" ? Я знаю.
-
Phoinix:
Если ставил ActivePerl под винду, то его по-умолчанию нет...
На 100% уверен?
-
NeoNox
Сам ставил... а потом CGI доустанавливал...
А насчет ошибки точно не знаю, я strict использую только последнее время, но у меня подобные бывали до этого...
-
Phoinix ну и зря. Может на заре и были дистрибутивы без CGI.pm но я таких не встречал.
-
NeoNox
Честно говоря, я его очень редко использую, поэтому сильно не огорчился увидев, что его нет. :-)
P.S. А что все-таки означает ошибка??
Проверил...
При отсутствии CGI у меня вообще никакого эффекта в виде 500-й ошибки... :-( просто данные не берет и все...
-
Она означает что ты редко используешь use strict; в своих программах.
Переменная не определена. Лечится объявлением переменной с помощью my.
-
NeoNox
[OFF]Я как-то попробовал в одну из предыдущих своих программ вставить use strict, потом потратил около 2 часов расставляя my и local, а когда мне это надоело, я решил что use strict лучше писать в начале скрипта... :-)[/OFF]
-
Исходник, который показан выше у меня нормально отработал в винде...
только ругался на методы, после их заменты - заработал:
add_worksheet -> addworksheet
add_format -> addformat
-
Дело в этом :
use strict;
когда убрал все заработало.
спасибо за совет.
NeoNox с меня пиво :)
-
дык, в идеале должно и со strict-ом работать...
-
nobody это еще не спасибо
оставь use strict;
и в следующей за ним строке напиши my $ffff; или как там эта переменная у тебя называется.
вот тогда и будет спасибо
-
Да мне этот use strict, как мертвому припарка, поскольку задача немного в другом, главное что переменные получились, а все остальное не важно... Я пер использую только для генирации xls, просто средствами PHP этого нереализованно, вот и пришлось на скорую руку с perl\'ом разбираться. :)