我正在尝试更改GSM TAP3.11文件中的MO(发起)呼叫的费用值,但无法处理所需的
在这里,我可以直接访问持续时间值,但要附加费用值(附带不同的大小写),以更改(1) chargeDetail
和(2) chargeDetail
上的费用值({{1}中的第一条记录和第二条记录})。
我的背景仅适用于python,这是首次使用perl。我之所以使用它,是因为经过搜索后,我相信只有perl才能处理TAP文件。 (请参阅TAP3::Tap3edit)
ChargeDetailList
答案 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);
}
}
}
}
}