如何在Perl中将字符串读入哈希

如何在Perl中将字符串读入哈希,perl,bioinformatics,Perl,Bioinformatics,我有一个文件,里面有一系列随机的a、G、C和T,看起来像这样: >Mary ACGTACGTACGTAC >Jane CCCGGCCCCTA >Arthur AAAAAAAAAAT 我拿了那些信,把它们浓缩成acgtacgtacgtacccccggcctaaaaaaaat。现在,我对连接序列中的一系列位置感兴趣,我想找到与这些位置(坐标)匹配的相关名称。我使用Perl函数length计算每个序列的长度,然后将计算长度与散列中的名称相关联。 到目前为止,我已经: #! /usr

我有一个文件,里面有一系列随机的a、G、C和T,看起来像这样:

>Mary
ACGTACGTACGTAC
>Jane
CCCGGCCCCTA
>Arthur
AAAAAAAAAAT
我拿了那些信,把它们浓缩成
acgtacgtacgtacccccggcctaaaaaaaat
。现在,我对连接序列中的一系列位置感兴趣,我想找到与这些位置(坐标)匹配的相关名称。我使用Perl函数length计算每个序列的长度,然后将计算长度与散列中的名称相关联。 到目前为止,我已经:

#! /usr/bin/perl -w
use strict;

my $seq_input = $ARGV[0]; 
my $coord_input = $ARGV[1]; 
my %idSeq; #Stores sequence and associated ID's.

open (my $INPUT, "<$seq_input") or die "unable to open $seq_input";
open (my $COORD, "<$coord_input") or die "unable to open $fcoord_input";

while (<$INPUT>) {
    if ($_ = /^[AGCT/) {
    $idSeq{$_

my $id = ( /^[>]/) 

#put information into a hash
#loop through hash looking for coordinates that are lower than the culmulative length

foreach $id
 $totallength = $totallength + length($seq)
 $lengthId{$totalLength} = $id
foreach $position
 foreach $length
  if ($length >= $position) { print; last }

close $fasta_input;
close $coord_input;
print "Done!\n";
#/usr/bin/perl-w
严格使用;
我的$seq_输入=$ARGV[0];
我的$coord_输入=$ARGV[1];
我的%idSeq#存储序列和关联ID。

打开(我的$INPUT,“不完全清楚您想要什么;可能是这样:

my $seq;
my %idSeq;
while ( my $line = <$INPUT> ) {
    if ( my ($name) = $line =~ /^>(.*)/ ) {
        $idSeq{$name} = length $seq || 0;
    }
    else {
        chomp $line;
        $seq .= $line;
    }
}

我认为您在将代码粘贴到问题中时丢失了很大一部分代码。请修改它。这甚至还不到编译的程度。@simbabque鉴于提问者的历史,我认为我们不会得到更多信息。他只接受了十几个给定答案中的一个,并且不回复注释。@PerlDuck我知道。但我们现在什么都做不了关于那件事。你当时可能不在,但我记得有一段时间,它显示了某个地方的问题与接受答案的比率(可能是个人资料),我们提醒人们在提出新问题之前,请先接受答案。
$seq = 'ACGTACGTACGTACCCCGGCCCCTAAAAAAAAAAAT';
%idSeq = (
      'Mary' => 0,
      'Jane' => 14,
      'Arthur' => 25,
);