#!/usr/bin/perl use strict; use warnings; use XML::Writer; use XML::Simple; use XML::LibXML; my $out; my $xml = XML::Writer->new(OUTPUT => \$out, DATA_MODE => 1, DATA_INDENT => ' '); $xml->xmlDecl(); $xml->startTag('doc'); my $check_1 = 0; open(my $fh, "<", "20150625163139.txt") or die "Failed to open file: $!\n"; while(<$fh>) { chomp; next if !length; my ($string1, $string2, $subscript_name, $subscript_value) = / ^(.*?):: ([^\s]+) \.([^\s]+)\s+= \s(.*) /x; if ( $check_1 == 0 ) { $xml->startTag($string1); $check_1 += 1; } $xml->startTag($string2); $xml->dataElement($subscript_name => $subscript_value); $xml->endTag(); } $xml->endTag(); $xml->endTag(); $xml->end(); print $out; close $fh; #### GI-eSTB-MIB-NPH::eSTBGeneralErrorCode.0 = INTEGER: 0 GI-eSTB-MIB-NPH::eSTBGeneralConnectedState.0 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBGeneralPlatformID.0 = INTEGER: 2076 GI-eSTB-MIB-NPH::eSTBGeneralFamilyID.0 = INTEGER: 25 GI-eSTB-MIB-NPH::eSTBGeneralModelID.0 = INTEGER: 60436 GI-eSTB-MIB-NPH::eSTBGeneralUnitAddressID.0 = STRING: 000-00802-49393-076 GI-eSTB-MIB-NPH::eSTBGeneralSettopMac.0 = STRING: b8:16:19:28:18:f3 GI-eSTB-MIB-NPH::eSTBGeneralRemodChan.0 = INTEGER: 3 GI-eSTB-MIB-NPH::eSTBGeneralSettopTime.0 = INTEGER: 1119302620 GPS GI-eSTB-MIB-NPH::eSTBPurchaseStatusUnsentPurchases.0 = INTEGER: 0 GI-eSTB-MIB-NPH::eSTBPurchaseStatusUnackPurchases.0 = INTEGER: 0 GI-eSTB-MIB-NPH::eSTBPurchaseStatusLastSeqNumPurchases.0 = INTEGER: 0 GI-eSTB-MIB-NPH::eSTBPurchaseStatusLastReportBackTimePurchases.0 = INTEGER: 1118516578 GI-eSTB-MIB-NPH::eSTBPurchaseStatusIppvStatus.0 = INTEGER: false(2) GI-eSTB-MIB-NPH::eSTBOobFrequency.0 = INTEGER: 75250000 GI-eSTB-MIB-NPH::eSTBOobCarrierLock.0 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBOobLostLockCount.0 = Counter32: 0 GI-eSTB-MIB-NPH::eSTBOobDataPresent.0 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBOobEMMDataPresent.0 = INTEGER: false(2) GI-eSTB-MIB-NPH::eSTBOobSNRValue.0 = INTEGER: 24.9 GI-eSTB-MIB-NPH::eSTBOobSNRState.0 = INTEGER: good(4) GI-eSTB-MIB-NPH::eSTBOobAGCValue.0 = INTEGER: 16 GI-eSTB-MIB-NPH::eSTBOobAGCState.0 = INTEGER: good(4) GI-eSTB-MIB-NPH::eSTBOobNetworkPid.0 = INTEGER: 1911 GI-eSTB-MIB-NPH::eSTBOobEMMPid.0 = INTEGER: 5379 GI-eSTB-MIB-NPH::eSTBOobEMMProviderID.0 = INTEGER: 1 GI-eSTB-MIB-NPH::eSTBInBandNumberOfTuners.0 = INTEGER: 2 GI-eSTB-MIB-NPH::eSTBTunerIndex.1 = INTEGER: 1 GI-eSTB-MIB-NPH::eSTBTunerIndex.2 = INTEGER: 2 GI-eSTB-MIB-NPH::eSTBInBandTunerModulationMode.1 = INTEGER: qam256(3) GI-eSTB-MIB-NPH::eSTBInBandTunerModulationMode.2 = INTEGER: qam256(3) GI-eSTB-MIB-NPH::eSTBInBandTunerCarrierLock.1 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBInBandTunerCarrierLock.2 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBInBandTunerPCRLock.1 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBInBandTunerPCRLock.2 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBInBandTunerDataLock.1 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBInBandTunerDataLock.2 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBInBandTunerEMMDataPresent.1 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBInBandTunerEMMDataPresent.2 = INTEGER: true(1) GI-eSTB-MIB-NPH::eSTBInBandTunerFrequency.1 = INTEGER: 195000000 GI-eSTB-MIB-NPH::eSTBInBandTunerFrequency.2 = INTEGER: 501000000 GI-eSTB-MIB-NPH::eSTBInBandTunerAGCValue.1 = INTEGER: 0 GI-eSTB-MIB-NPH::eSTBInBandTunerAGCValue.2 = INTEGER: 0 GI-eSTB-MIB-NPH::eSTBInBandTunerAGCState.1 = INTEGER: poor(2) GI-eSTB-MIB-NPH::eSTBInBandTunerAGCState.2 = INTEGER: poor(2) GI-eSTB-MIB-NPH::eSTBInBandTunerSNRValue.1 = INTEGER: 42.0 #### Code point \u0016 is not a valid character in XML at ./.pl line 34 #### $xml->dataElement($subscript_name => $subscript_value); #### GI-eSTB-MIB-NPH::eSTBGeneralErrorCode.0 = INTEGER: 0 GI-eSTB-MIB-NPH::eSTBGeneralConnectedState.0 = INTEGER: true(1) #### <0>INTEGER: 0 <0>INTEGER: true(1) #### perl -pe's/\x08//g' <20150625163139.txt >20150625163139.txt