Я борюсь с Perl (v5.24.1) SOAP :: Lite.я пытаюсь добавить элемент в существующий элемент данных.
Предположим, у меня есть следующая конструкция:
use SOAP::Lite + qw/ trace /;
my $soap = SOAP::Lite->new( proxy => 'http://soap.server.com');
$soap->on_action( sub { "http://tempuri.org/some" });
$soap->autotype(0)->readable(1);
$soap->default_ns('http://tempuri.org/');
$som = $soap->call('GetItems', SOAP::Data->name('Store')->attr( { 'xmlns' => 'Some.Structs'} )->value(
\SOAP::Data->value(
SOAP::Data->name('Items')->value(
\SOAP::Data->value(
SOAP::Data->name('Available')->value('false'),
SOAP::Data->name('Apple')->value('1'),
SOAP::Data->name('Orange')->value('2'),
)),
)),
);
Но теперь я хотел бы добавить 'N' элементов Items , я хочу это в циклеисходя из условий, так что это просто пример, я попробовал следующее:
use SOAP::Lite + qw/ trace /;
my $soap = SOAP::Lite->new( proxy => 'http://soap.server.com');
$soap->on_action( sub { "http://tempuri.org/some" });
$soap->autotype(0)->readable(1);
$soap->default_ns('http://tempuri.org/');
my $data1= (SOAP::Data->name('Store')->attr( { 'xmlns' => 'Some.Structs'} )->value(
\SOAP::Data->value(
SOAP::Data->name('Items')->value(
\SOAP::Data->value(
SOAP::Data->name('Available')->value('false'),
SOAP::Data->name('Apple')->value('1'),
SOAP::Data->name('Orange')->value('2'),
)),
)),
);
my $data2= (SOAP::Data->name('Store')->attr( { 'xmlns' => 'Some.Structs'} )->value(
\SOAP::Data->value(
SOAP::Data->name('Items')->value(
\SOAP::Data->value(
SOAP::Data->name('Available')->value('true'),
SOAP::Data->name('Bananas')->value('4'),
SOAP::Data->name('Pineapple')->value('2'),
)),
)),
);
Теперь пытаюсь добавить элемент
push $data1->value, data2;
Или
push ($data1,$data1);
Возвратis: Экспериментальное нажатие на скаляр теперь запрещено ...
Наконец, когда элементы объединены, я хотел бы отправить их, но я не уверен, сработает ли это:
$som = $soap->call('GetItems', $data1);
Любая помощь будет принята с благодарностью ....