[英]Cannot split line and save to variable using whitespace in perl
我在解析文件時遇到了一些麻煩。 文件中的兩行包含單詞“映射”,我想提取這兩行中的數字。
這是我的代碼:
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";
}
但是 OUTPUT 文件只有“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 ' ', $_;
拆分任意長度的空白,丟棄前導和尾隨空白。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.