Как в Perl отправить параметры CGI в командной строке?

Обычно я получаю данные с веб-страницы, но я хочу отправить их из командной строки, чтобы облегчить отладку.

Чтобы получить данные, я делаю что-то вроде:

my $query = new CGI;
my $username = $query->param("the_username");

это не работает:

$ ./script.pl the_username=user1

РЕДАКТИРОВАТЬ:

На самом деле вышеописанное работает. Оператор if, который проверял $username, был неверным (использование == вместо eq).


person DanielST    schedule 13.09.2011    source источник
comment
У вас есть use CGI; в вашем скрипте (обратите внимание на заглавные буквы)? Вы используете $query = new CGI; print $query->param("the_username") или что-то еще?   -  person ErikR    schedule 13.09.2011
comment
Там я исправил некоторый синтаксис. да, я использую CGI;   -  person DanielST    schedule 13.09.2011


Ответы (2)


Как я уже давно выяснил, вы действительно можете передавать параметры строки запроса в скрипт, используя CGI.pm. Я не рекомендую это в качестве предпочтительного метода отладки (лучше сохранить воспроизводимый материал в файлах, которые затем направляются в STDIN скрипта), однако он работает:

#!/usr/bin/env perl

use warnings; use strict;

use CGI;

my $cgi = CGI->new;

my $param_name = 'the_username';

printf(
    "The value of '%s' is '%s'.\n",
    $param_name, $cgi->param($param_name)
);

Выход:

$ ./t.pl the_username=yadayada
The value of 'the_username' is 'yadayada'.
person Sinan Ünür    schedule 13.09.2011
comment
Спасибо, ваше право. я просто использовал неправильный синтаксис при проверке, было ли оно отправлено. - person DanielST; 13.09.2011

CGI считывает переменные со стандартного ввода.

См. эту часть документации CGI.pm:

http://search.cpan.org/dist/CGI/lib/CGI.pod#DEBUGGING

person Nate C-K    schedule 13.09.2011
comment
Спасибо, эта страница очень полезна. - person DanielST; 13.09.2011
comment
Да, это почти как руководство о том, как делать компьютерную графику с помощью Perl ;) - person Nate C-K; 13.09.2011