Мне нужна помощь в обработке переменных Perl. Здесь я получаю ввод как хэш. Теперь мне нужно отправить эту переменную хэша в другую подпрограмму. Как передать данные в качестве аргумента другой подпрограмме? Приведенный ниже код показывает, как я приближаюсь это:Преобразование Hash To Array в Perl Catalyst
if ($csData->{'CUSTOMER_INVOICE_DETAILS'})
{
$c->log->debug("API Response:". Dumper $csData->{'CUSTOMER_INVOICE_DETAILS'});
my $Charges = [];
my @customerCharges = $csData->{'CUSTOMER_INVOICE_DETAILS'};
foreach(@customerCharges)
{
my ($customername,$customeramount) = split /:/;
my $charge_hash = ({
customername => $customername,
customeramount => $customeramount
});
push(@$Charges, $charge_hash);
}
my @ReturnCharges = $self->API->get_customer_charges($Charges, $Customer->customerid, $params->{'invoiceid'});
другая подпрограмма, где принимаются эти данные следующим образом:
sub get_customer_charges
{
my $self = shift;
my ($charge, $CustomerId, $INID) = @_;
my $http_request = {
action => 'GetTariff',
customerid => $CustomerId,
csid => $INID,
};
my $markups = $self->APIRequest($http_request);
###Charge Level ID Inserting As 10
my @ChargeLevels;
my @BaseLevelID;
foreach my $ch (@$charge)
{
my ($customername,$customeramount) = split(':', $ch->{'customername'}, $ch->{'customername'});
my $chargelevel = join(':', $ch->{'customername'}, $ch->{'customeramount'}, '10');
push(@BaseLevelID, $chargelevel);
}
push(@ChargeLevels, @BaseLevelID);
return @ChargeLevels;
}
При печати в журнал сервера для переменной CUSTOMER_INVOICE_DETAILS Я получаю следующие значения:
API Response:$VAR1 = {
'Product' => '34.04',
'basetax' => '2.38',
'vattax' => '4.36'
};
после отправки данных на вторую подпрограмму данные, поступающие в журнал сервера для второй переменной подпрограммы выглядит следующим образом:
Charges in API:$VAR1 = 'HASH(0xb75d6d8)::10';
Может ли кто-нибудь помочь, как я могу отправить данные хэша из одной подпрограммы в другую?
строки с '' split' и join' являются подозрительными. – choroba
Hi chorobra пожалуйста, игнорируйте split. И соединение используется. Мне нужно назначить другое значение как 10 для существующего массива, чтобы я использовал соединение. –
Но, похоже, соединение отвечает за неправильный вывод. – choroba