in reply to Re: Regarding Convert::ASN1 ?
in thread Regarding Convert::ASN1 ?

Hi Roboticus, As the data which is being read in ASN BER encoded so I need to use Convert::ASN1 to decode it. This module uses Dumper to dump the decoded data structure in format like:
$VAR1 = { "diameterCreditControlRecord" => { "dAFirstValueAfter" => "+1920.57", "originHost" => "aaa://lg-2;transport=tcp", "originRealm" => "lg.gom", "recordSequenceNumber" => "\1", "finalCharge" => "+110.43", "dAFirstID" => 10, "callingPartyNumber" => "\241\b\30dB\205", "accumulatorValue4" => 0, "accumulatorDeltaValue" => 11043, "subscriberID" => "\241\b\30dB\205", "serviceProviderID" => 1, "trafficCase" => 20, "dAFirstValueBefore" => "+2031.00", "accumulatorID" => 5, "accumulatorValue2" => 0, "serviceOfferings" => 4259872, "accumulatorValue1" => 68, "dAFirstAccDuration" => 11043, "originatingLocationInfo" => "\221&!\360", "lastPartialOutput" => 1, "accountValueBefore" => "+48.22", "extText" => "inter", "chargedDuration" => "+#", "cdrType" => 0, "teleServiceCode" => 6, "dataVolume" => "\254\210h", "serviceClass" => 603, "triggerTime" => "!p\1qE!0\20\0", "extInt1" => 1, "nodeID" => "LGLLL", "numberOfSDPInterrogations" => 269, "accumulatorValue5" => 56795, "accountValueAfter" => "+0.02", "accumulatorValue3" => 0, "localSequenceNumber" => "\25\347qZ", "currencyType" => 0 }
Requirement is to have output in above format but print the fields which contain non printable characters like "localSequenceNumber" in hex format and rest of the fields in format already displayed above. Regards, Dhiraj

Replies are listed 'Best First'.
Re^3: Regarding Convert::ASN1 ?
by roboticus (Chancellor) on Jul 23, 2012 at 23:23 UTC

    dhiraj4mann:

    Then all you need to do is update your data after reading it:

    #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $VAR = { "diameterCreditControlRecord" => { "dAFirstValueAfter" => "+1920.57", "originHost" => "aaa://lg-2;transport=tcp", ..... snip ..... "callingPartyNumber" => "\241\b\30dB\205", "accumulatorValue4" => 0, "accumulatorDeltaValue" => 11043, "subscriberID" => "\241\b\30dB\205", ..... snip ..... } }; my $t = $$VAR{diameterCreditControlRecord}; # Now just convert each field you care about into a hex string: $$t{$_} = tohex($$t{$_}) for (qw( callingPartyNumber subscriberID )); print Dumper($VAR); sub tohex { ..... }

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

      Thanks a lot. It worked .... Dhiraj