You seem to enjoy making life difficult for yourself. You post messy code making it difficult to read and follow program structure. Some posts include use strict; others don't. Be consistent. Here is the perltidy output for this script to get you started, with a couple of changes:
#!/usr/bin/perl use strict; use warnings; $DNA1 = "GGCT CTGCGCGGNN"; # Remove N from sequence $DNA1 =~ s/N//ig; # Remove whitespace Line 5 $DNA1 =~ s/\s//g; # In a loop, find every 4-base substring & then find its # GC%, GC-skew & Purine Loading Index (PLI): $fm = 1.010; # Line 9 do { while ( my $fm = substr( $DNA1, 0, 4 ) ) { $A = 0; $T = 0; $G = 0; $C = 0; while ( $fm =~ /A/ig ) { $A++ } while ( $fm =~ /T/ig ) { $T++ } while ( $fm =~ /G/ig ) { $G++ } while ( $fm =~ /C/ig ) { $C++ } $tot1 = $A + $T + $G + $C; $gc1 = $G - $C; $gc2 = $G + $C; # Line 16 $cent = 100; $gccon2 = $gc2 / $tot1; $gccon3 = $cent * $gccon2; $gccon4 = sprintf( "%.2f", $gccon3 ); $gcskew = $gc1 / $gc2; $GCSkew = sprintf( "%.4f", $gcskew ); # To find Purine Loading Index (PLI): $four = 4; $at1 = $A - $T; $x1 = ( $gc1 + $at1 ) / $tot1; $pli = $thousand * $x1; $PLI = sprintf( "%.0f", $pli ); # No. of sliding Windows: $numberwin = $total1 / $four; $NoWindows = sprintf( "%.0f", $numberwin ); print " Purine Loading Index of each 1Kb Window=$PLI bases/4- +base.\n"; $output = "GC-SkewResult .txt"; unless ( open( RESULT, ">$output" ) ) { print "Cannot open file\"$output\".\n\n"; exit; } print RESULT"\n RESULTS for substrings:\n GC-Skew values of substrings:\n $GCSkew\n\n Percent GC Content of substrings:\n $gccon4\n\n"; close(RESULT); } } until ( $fm =~ /^\s*$/ ); exit;
Poor formatting isn't going to make things any easier to fix. Define the required variables and actually work through the program yourself, adding debugging lines where required (start with simple print statements indicating the point your program is executing). See also Debugging and Optimization from the tutorials section.
Update: Also, your post titles are always too long, see How do I compose an effective node title?.
Update 2: In future please clearly mark updates, please don't replace the entire post with a new one rendering existing replies out of context.
In reply to Re: Why am I getting the result only from 1st substring and not from substring 2 and 3 in using the do-until loop with while loop inside it?
by marto
in thread How can I get the correct results for substrings 2 and 3 in a do-until loop?
by supriyoch_2008
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |