Let me format this for you, with some recoding as well.
Update:
This probably won't work for you since I wasn't sure what your input data looked like. My assumption was that it was multi-space delimited, but as I re-read your spec, it might have the actual labels interspersed in there.
Perhaps you could include some sample data to clear this up?
use strict;
use warnings;
use autodie;
my $length;
my $file = 'the filename...';
open(my $fh, '<', $file) || die "cant open file\n";
while (<$fh>) {
chomp;
my($target, $mirna, $score, $start) = split(/\s+/);
print join("\t", $mirna, $target, $start, $score), "\n";
$length = $.;
}
close $fh;
This is the code i have written for which the output is:
miR156a AT3G19833 151 0.607541
miR156a AT3G19883 11 0.607541
miR156a AT3G19883 12 0.607541
miR156a AT3G19773 15 0.607541
miR156a AT3G19833 161 0.607541
miR156a AT3G19780 163 0.607541
I haven't tested this, and this might not work exactly as you need it to, but I think it avoids some of the problems you might have had in your version.
What can be asserted without proof can be dismissed without proof. - Christopher Hitchens, 1949-2011
|