sub extractData($$) { my $pendingResult = $_[0]; my $currentTuple = $_[1]; my $fnumber; my %valuesHash; $fnumber = 4; my $dataField = $pendingResult->getvalue($currentTuple,$fnumber); my $numofbs; while(length($dataField)>0) { # Extract the field name that is surronded by double quotes $dataField =~ m/(\".*?\")/s; my $fieldName = $1; $dataField = substr $dataField ,length($fieldName); $fieldName =~ s/\"//g; #Remove the surronding " signs. if($dataField =~ m/(^= )/s) { #Matched null $dataField = substr $dataField , length($1); $valuesHash{$fieldName}=undef; } elsif ($dataField =~ m/(^=\')/s) { #Has data. my $value; $dataField = substr $dataField ,2; #Skip the =' LOOP: { #This is to allow us to use last from a do loop. #Recommended in perlsyn manpage. do { my $matchString; my $matchString2; #Find the substring ending with the first ' or first \ $dataField =~ m/(.*?[\'])?/s; $matchString = $1; $numofbs = ($matchString =~ tr/\\//) % 2; if ($numofbs == 1) { #// odd number of \, i.e. intermediate ' $matchString2 = substr $matchString,0, length($matchString)-2; $matchString2 =~ s/\\\\/\\/g; $value .= ($matchString2 . "\'"); $dataField = substr $dataField,length($matchString); } else { #// even number of \, i.e. found end of data $matchString2 = substr $matchString,0, length($matchString)-1; $matchString2 =~ s/\\\\/\\/g; $value .= $matchString2; $dataField = substr $dataField,length($matchString)+1; last; } } until(length($dataField)==0); } $valuesHash{$fieldName} = $value; }#else if else { logErrorMessage "Error in PendingData Sequence Id " . $pendingResult->getvalue($currentTuple,0); die; } } #while return %valuesHash; }