#!/usr/bin/perl use warnings; use strict; use 5.010; $/ = ''; ## paragraph mode while( my $dataset = ) { ## open each dataset as a ramfile open DATASET, '<', \$dataset or die $!; local $/ = "\n"; ## Return readline to by-line mode my $counter = 0; my $total_aligned_reads = 0; my $mtDNA; while () { ## my $line = $_; #### Unnecessary; see next comment next if /Data_Set_\d+: /; next if /^NoCoordinateCount/; next if /^$/; my($chr, $lenLabel, $lengNumbers, $AlignedLabel, $alignedNumbers) = split /\s/; ####, $line; split operates on $_ by default $total_aligned_reads += $alignedNumbers; $mtDNA = $alignedNumbers if $chr eq "chrM"; } say "total aligned reads = $total_aligned_reads"; say "mtDNA = $mtDNA"; say "mtDNA percentage = ", $mtDNA/$total_aligned_reads*100; } __DATA__ ...sample data as above ... #### C:\test>junk total aligned reads = 14253 mtDNA = 2650 mtDNA percentage = 18.5925770013331 total aligned reads = 906 mtDNA = 1 mtDNA percentage = 0.11037527593819 total aligned reads = 538773 mtDNA = 169 mtDNA percentage = 0.0313675703867863