无法在perl中使用空格拆分行并保存到变量
我在解析文件时遇到了一些问题。 文件中的两行包含单词“Mapped”,我想提取这两行中的数字 这是我的代码:无法在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
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',$代码>
要在任意长度的空格上拆分,请丢弃前导空格和尾随空格。请发布数据文件的内容,而不是编辑器的图像