无法在perl中使用空格拆分行并保存到变量

无法在perl中使用空格拆分行并保存到变量,perl,parsing,text,hash,split,Perl,Parsing,Text,Hash,Split,我在解析文件时遇到了一些问题。 文件中的两行包含单词“Mapped”,我想提取这两行中的数字 这是我的代码: my %cellHash = (); my $mapped = 0; my $alnPairs = 0; my @mappedReads = (); while (<ALIGN_SUMMARY>) { chomp($_); if (/Mapped/) { print "\n$_\n"; $mapped

我在解析文件时遇到了一些问题。 文件中的两行包含单词“Mapped”,我想提取这两行中的数字

这是我的代码:

my %cellHash    = ();
my $mapped      = 0;
my $alnPairs    = 0;
my @mappedReads = ();

while (<ALIGN_SUMMARY>) {
    chomp($_);

    if (/Mapped/) {
        print "\n$_\n";
        $mapped = (split / /, $_)[2];
        push(@mappedReads, $mapped);
    }

    if (/Aligned pairs/) {
        print "\n$_\n";
        $alnPairs = (split / /, $_)[4];
    }
}

{ $cellHash{$cellDir} } = (
    'MappedR1' => $mappedReads[0] ,
    'MappedR2' => $mappedReads[1] ,
    'AlnPairs' => $alnPairs ,
);

foreach my $cellName ( keys %cellHash){
    print OUTPUT $cellName,
        "\t", ${ $cellHash{$cellName} }{"LibSize"},
        "\t", ${ $cellHash{$cellName} }{"MappedR1"},
        "\t", ${ $cellHash{$cellName} }{"MappedR2"},
        "\t", ${ $cellHash{$cellName} }{"AlnPairs"},
        "\n";
}
my%cellHash=();
我的$mapped=0;
我的$alnPairs=0;
我的@mappedReads=();
而(){
咀嚼(美元);
如果(/Mapped/){
打印“\n$\n”;
$mapped=(分割/,$uux)[2];
推送(@mappedReads,$mapped);
}
如果(/Aligned pairs/){
打印“\n$\n”;
$alnPairs=(拆分/,$)[4];
}
}
{$cellHash{$cellDir}}=(
'MappedR1'=>$mappedReads[0],
'MappedR2'=>$mappedReads[1],
“AlnPairs”=>$AlnPairs,
);
foreach my$cellName(键%cellHash){
打印输出$cellName,
“\t”、${$cellHash{$cellName}{“LibSize”},
“\t”、${$cellHash{$cellName}{“MappedR1”},
“\t”、${$cellHash{$cellName}{“MappedR2”},
“\t”、${$cellHash{$cellName}{“AlnPairs”},
“\n”;
}
但是输出文件只有“AlignedPairs”列,在MappedR1或MappedR2中没有任何内容


我做错了什么?谢谢

当我查看文件时,它看起来不止一个空格。这里有一个例子,我的意思是什么,我做了什么来提取数字

my $test = "blah   :    123455";
my @test_ary = split(/ /, $test);
print scalar @test_ary . "\n";   # Prints the size of the array

$number = $1 if $test =~ m/([0-9]+)/;
print "$number\n";      # Prints the extracted number
运行的输出:

Size of array: 8
The extracted number: 123455

希望这能有所帮助。

首先,如果你想让任何人真正为你测试一些东西,而不是图像,请粘贴到你的实际输入和输出中。 第二,你不是在空格上分割,你是在单个文本空间上分割。使用
split',$

要在任意长度的空格上拆分,请丢弃前导空格和尾随空格。

请发布数据文件的内容,而不是编辑器的图像