Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > perl cgi xml


Автор: Eferalgan 19.8.2014, 23:26
Уважаемые, коллеги!
Помогите челловеку, который начинает свое знакомство с perl.
Надо сделать вебку которая постом принимает xml, проверяет некоторые вещи и отвечает тем же xml. 
На данный момент есть следующее:

Цитата

#!/usr/bin/perl -T
 
use strict;
use XML::Simple;
use CGI qw();
use Data::Dumper;
 
my $cgi = CGI->new;
my $xml = $cgi->param('POSTDATA');
print "Content-type: text/html\n\n";
 
my $simple = XML::Simple->new(ForceArray => 1, KeepRoot => 1);
my $data   = $simple->XMLin($xml);
 
print Dumper($data) . "\n";

В результате отправленая POST-ом xml выводиться в броузере. 
Например вот так:
Цитата

$VAR1 = {
          'Transfer' => [
                        {
                          'action' => 'Presearch',
                          'xmlns' => 'http://abc.com',
                          'Data' => [
                                    {
                                      'xmlns:xsi' => 'http://www.abcd.com',
                                      'Unit' => {
                                                'ls' => {
                                                        'value' => '710005007302'
                                                      }
                                              },
                                      'xsi:type' => 'Payer'
                                    }
                                  ],
                          'interface' => 'Debt'
                        }
                      ]
        };

Как создать переменную со значением параметра "action", например? То есть, как в результате получить переменную $x со значением "Presearch"?
Заранее спасибо за любые советы)
P.S. Perl 5

Автор: Bulat 20.8.2014, 05:44
А если чуть-чуть изменить скрипт, как я указал ниже, что будет на выводе??

Код

#!/usr/bin/perl -T
 
use strict;
use XML::Simple;
use CGI qw();
use Data::Dumper;
 
my $cgi = CGI->new;
my $xml = $cgi->param('POSTDATA');
print "Content-type: text/html\n\n";
 
my $simple = XML::Simple->new(ForceArray => 1, KeepRoot => 1);
my $data   = $simple->XMLin($xml);
 
print $data . "\n";

Автор: Eferalgan 20.8.2014, 10:35
HASH(0x1060f00)

Автор: tzirechnoy 20.8.2014, 13:47
perldoc perlref, прочесть цэликом и с выражэнием.


(Ну, конкретно здесь -- вероятно $data->{"Transfer"}->[0]->{"action"} )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)