我有一个文件,其中包含一系列由A,C,C,G和T组成的行。我想找到这些行的长度,列出culmultive长度(按顺序添加长度),并将其放入数组中。到目前为止,我有:
#! /usr/bin/perl -w
use strict;
my $input = $ARGV[0];
my %idSeq;
my (@ID, @Seq);
open (my $INPUT, "<$input") or die "unable to open $input";
while (<$INPUT>) {
if (my $culm_length = /^([AGCT]\w+)\n$/) {
length($culm_length) = $_;
push (@Seq, $1);
}
}
bla bla bla....
到目前为止,我认为我写的内容给了我一系列单行的长度。我想要一些长篇大论,有什么想法吗?
答案 0 :(得分:2)
参考上一个被搁置的问题How do I read strings into a hash in Perl,我想也许你想要一个运行总计行的长度
我会这样写。它将运行总计保持在$total
并在每次更改时将其值推送到@lengths
数组
use strict;
use warnings 'all';
my ( $input ) = @ARGV;
open my $fh, '<', $input or die qq{unable to open "$input" for input: $!};
my @lengths;
my $total = 0;
while ( <$fh> ) {
push @lengths, $total += length $1 if /^([ACGT]+)/;
}
答案 1 :(得分:1)
#!/usr/bin/perl -w
use strict;
my $length = 0;
while (<>) {
$length += length($1) if /^([AGCT]\w+)$/;
}
my @length = $length; # But why would you want to do this?!
...