更改GSMA TAP3文件中的特定值

时间:2019-06-21 14:20:00

标签: arrays regex perl struct

我正在尝试更改GSM TAP3.11文件中的MO(发起)呼叫的费用值,但无法处理所需的

在这里,我可以直接访问持续时间值,但要附加费用值(附带不同的大小写),以更改(1) chargeDetail(2) chargeDetail上的费用值({{1}中的第一条记录和第二条记录})。

enter image description here

我的背景仅适用于python,这是首次使用perl。我之所以使用它,是因为经过搜索后,我相信只有perl才能处理TAP文件。 (请参阅TAP3::Tap3edit

ChargeDetailList

1 个答案:

答案 0 :(得分:1)

Perl中的exist()函数用于检查给定数组或哈希中的元素是否存在。如果所需元素存在于给定数组中,则此函数返回1;否则,哈希返回0。

$Tax_Rate = 3;
$Exchange_Rate = 3;
$Rate_Plan_Charge_Rate = 8;
my $key;

# Will scan all the calls for MOC's.
foreach $key ( @{$struct->{'transferBatch'}->{'callEventDetails'} } ) {

    foreach ( keys %{$key} ) {

        if ( $_ eq "mobileOriginatedCall" )
        {
            if (exists $key->{$_}->{'basicCallInformation'}->{'totalCallEventDuration'}){

                $duration = $key->{$_}->{'basicCallInformation'}->{'totalCallEventDuration'};

                if (exists $key->{$_}->{basicServiceUsedList}[0]{chargeInformationList}[0]{chargeDetailList}[0]){

                    $key->{$_}->{basicServiceUsedList}[0]{chargeInformationList}[0]{chargeDetailList}[0]{charge}=($duration * $Rate_Plan_Charge_Rate) / $Exchange_Rate;
                }
                if (exists $key->{$_}->{basicServiceUsedList}[0]{chargeInformationList}[0]{chargeDetailList}[1]){

                    $key->{$_}->{basicServiceUsedList}[0]{chargeInformationList}[0]{chargeDetailList}[1]{charge}=($duration * $Rate_Plan_Charge_Rate) / $Exchange_Rate;
                }
                $New_Charge = $key->{$_}->{basicServiceUsedList}[0]{chargeInformationList}[0]{chargeDetailList}[0]{charge};

                if (exists $key->{$_}->{basicServiceUsedList}[0]{chargeInformationList}[0]{taxInformation}[0]){

                    $key->{$_}->{basicServiceUsedList}[0]{chargeInformationList}[0]{taxInformation}[0]{taxValue}=($New_Charge / $Tax_Rate);
                }
                if (exists $key->{$_}->{basicServiceUsedList}[0]{chargeInformationList}[0]{taxInformation}[1]){

                    $key->{$_}->{basicServiceUsedList}[0]{chargeInformationList}[0]{taxInformation}[0]{taxValue}=($New_Charge / $Tax_Rate);

                }
            }
        }
    }
}