in reply to String Search

What have you tried so far? Show us your code, without seeing it we can't correct any mistakes you might have made.
Perl 6 - links to (nearly) everything that is Perl 6.

Replies are listed 'Best First'.
Re^2: String Search
by kallol.chakra (Initiate) on Aug 31, 2009 at 09:14 UTC

    Can you please look into it?

    use IO::File; open (INPUT_FILE, $ARGV[0]) || die "cant open file\n"; my @body = <INPUT_FILE>; my $count= 0; $no_of_lines=scalar(@body); for ( $i = 0 ; $i < $no_of_lines ; $i++) { $variable = $body[$i]; if ( $variable =~ "field1") { print "$field1,"; } if ( $variable =~ "field2") { print "$field2,"; } if ( $variable =~ "field2") { print "$field2,"; } ... ... } close file;

    It is a very bad way I have written, but main problem is that I can not write any else in the loop. I have to track whether any field1 or field2 is missing. The logic is : 1. Match -> field1:value1 2. If field1 exists then print value1, 3. else 4. print null,

      This code doesn't produce the output you say it does. Could you please enlighten me why? Does it really do that for you? is the part that you omitted (and replaced with ...) important?
      Perl 6 - links to (nearly) everything that is Perl 6.

        Hi, I am giving you the original data and programme.

        data: ----- CME20CP6.CallDataRecord.uMTSGSMPLMNCallDataRecord { sCFChargingOutput { callIdentificationNumber : '6CBFD7'H exchangeIdentity : "DWLCCN6" gSMCallReferenceNumber : '9103770001'H switchIdentity : '0001'H recordSequenceNumber : '39D42E'H date : '1409071F'H } eventModule { iNServiceDataEventModule { chargePartySingle : 'aPartyToBeCharged (0)' genericChargingDigits { [0] : '2000'H [1] : '011351'H [2] : '223A941400'H [3] : '233A940209'H [4] : '043A2000'H [5] : '0542'H [6] : '2600'H [7] : '2700'H [8] : '080290701391620122'H [9] : '2A02'H [10] : '72000000000000000000000000'H [11] : '730000000000000000041F'H [12] : '7400000000'H [13] : '3502'H } genericChargingNumbers { [0] : '0003136985138324'H [1] : '010413198935930920'H [2] : '0203136985138324'H [3] : '038290905893701402'H [4] : '0B000002000000'H } serviceFeatureCode : '0002'H timeForEvent : '131A01'H } } } CME20CP6.CallDataRecord.uMTSGSMPLMNCallDataRecord { sCFChargingOutput { callIdentificationNumber : '6CC99C'H exchangeIdentity : "DWLCCN6" switchIdentity : '0001'H recordSequenceNumber : '39D42F'H date : '1409071F'H } eventModule { iNServiceDataEventModule { chargePartySingle : 'bPartyToBeCharged (1)' genericChargingDigits { [0] : '2002'H [1] : '010359'H [2] : '023A8207'H [3] : '033A8207'H [4] : '043A0000'H [5] : '0506'H [6] : '2600'H [7] : '2704'H [8] : '080290701391622322'H [9] : '2A02'H [10] : '72000000000000000000000000'H [11] : '730000000000000000001F'H [12] : '3500'H } genericChargingNumbers { [0] : '0003138935167173'H [1] : '028210850000'H [2] : '0303138935167173'H [3] : '06041319'H } serviceFeatureCode : '0002'H timeForEvent : '131A20'H } } } .......... The code I had written : ------------------------- #use strict; use IO::File; open (INPUT_FILE, $ARGV[0]) || die "cant open file\n"; my @body = <INPUT_FILE>; my $count= 0; my $output_file_name="Decoded_cdr.txt"; my $restartDuringCall = ","; open(OUT_FILE,">$output_file_name"); #print $body[6]; $no_of_lines=scalar(@body); $cntr = 1; $no_of_cdrs = 0; for ($i=0; $i < $no_of_lines; $i++) { $variable = $body[$i]; if ($variable =~ "CME20CP6") { $no_of_cdrs = $cntr + 1; } } #print "No of CDRS : $no_of_cdrs \n"; for ( $i = 0 ; $i < $no_of_lines ; $i++) { $variable = $body[$i]; if ( $variable =~ /callIdentificationNumber/) { @tmp_var = split(/([:\'])/,$variable); $callIdentificationNumber = $tmp_var[4]; #print "$callIdentificationNumber,"; } if ($variable =~ m/exchangeIdentity/ ) { @tmp_var = split(/([:\"])/,$variable); $exchangeIdentity = $tmp_var[4]; #print "$exchangeIdentity,"; } if ($variable =~ m/gSMCallReferenceNumber/ ) { @tmp_var = split(/([:\'])/,$variable); $gSMCallReferenceNumber = $tmp_var[4]; #print "$gSMCallReferenceNumber,"; } if ($variable =~ m/restartDuringCall/ ) { @tmp_var = split(/([:\'])/,$variable); my $restartDuringCall = $tmp_var[4]; #print "$restartDuringCall,"; } if ($variable =~ m/restartDuringOutputIndicator/ ) { @tmp_var = split(/([:\'])/,$variable); $restartDuringOutputIndicator = $tmp_var[4]; } if ($variable =~ m/lastPartialOutput/ ) { @tmp_var = split(/([:\'])/,$variable); $lastPartialOutput = $tmp_var[4]; } if ($variable =~ m/partialOutputRecNum/ ) { @tmp_var = split(/([:\'])/,$variable); $partialOutputRecNum = $tmp_var[4]; } if ($variable =~ m/switchIdentity/ ) { @tmp_var = split(/([:\'])/,$variable); $switchIdentity = $tmp_var[4]; } if ($variable =~ m/disconnectionDueToSystemRecovery/ ) { @tmp_var = split(/([:\'])/,$variable); $disconnectionDueToSystemRecovery = $tmp_var[4]; } if ($variable =~ m/forloppDuringOutputIndicator/ ) { @tmp_var = split(/([:\'])/,$variable); $forloppDuringOutputIndicator = $tmp_var[4]; } if ($variable =~ m/forloppReleaseDuringCall/ ) { @tmp_var = split(/([:\'])/,$variable); $forloppReleaseDuringCall = $tmp_var[4]; } if ($variable =~ m/recordSequenceNumber/ ) { @tmp_var = split(/([:\'])/,$variable); $recordSequenceNumber = $tmp_var[4]; } if ($variable =~ m/incompleteCallDataIndicator/ ) { @tmp_var = split(/([:\'])/,$variable); $incompleteCallDataIndicator = $tmp_var[4]; } if ($variable =~ m/mSCAddress/ ) { @tmp_var = split(/([:\'])/,$variable); $mSCAddress = $tmp_var[4]; } if ($variable =~ m/date/ ) { @tmp_var = split(/([:\'])/,$variable); $date = $tmp_var[4]; } if ($variable =~ m/outputType/ ) { @tmp_var = split(/([:\'])/,$variable); $outputType = $tmp_var[4]; } #print "$callIdentificationNumber,$exchangeIdentity,$gSMCallRefere +nceNumber"; } print "\n"; close (INPUT_FILE); close OUT_FILE; ---------------------------------------------

        The output generates : The output not generating the required output.. This is like : value1,value2... Please help..