http://qs321.pair.com?node_id=11107499


in reply to Re^5: how to read input from a file, one section at a time?
in thread how to read input from a file, one section at a time?

In the above written script, how can I make the script to spit out the length of the sequence that is being read? So, after the line  printf $out_file "Number of proteins = %d\n\n",$num ; in the above code, I tried -  printf $out_file "string length = length($num) ; but nothing happens. What am I doing wrong?

Replies are listed 'Best First'.
Re^7: how to read input from a file, one section at a time?
by poj (Abbot) on Oct 21, 2019 at 10:35 UTC

    You need to provide a value to printf for example

    printf $out_file "string length = %d\n",length($num) ;
    but that gives you the length of the count value not the sequence. You need to calculate the sequence length before the value is changed by this counting regex $para =~ s/([A-Z])/ ++$prot{ $1 } /eg;

    Try making these changes

    # Remove comment line(s) and white space $para =~ s/^\s*#.*//mg; $para =~ s/\s//g; # add my $seq_length = length($para); # add print "[$para]\n"; # optional . . printf $out_file "Number of proteins = %d\n",$num ; printf $out_file "String length = %d\n\n",$seq_length; # add
    poj