@a=@c=@t=@g=@n=@a2=@c2=@t2=@g2=@n2=(); #### (@a, @c, @t, @g, @n, @a2, @c2, @t2, @g2, @n2) = (); #### for (my $k=0;$k<$number_positions; $k++) { my (@a,@c,@t,@g,@n,@a2,@c2,@t2,@g2,@n2); #### if ($letter1=~ /[aA]/) { ... } ... #### if (uc $letter1 eq 'A') { ... } if (uc $letter1 eq 'C') { ... } if (uc $letter1 eq 'T') { ... } if (uc $letter1 eq 'G') { ... } # ... #### $letter1 = uc $letter1; if ($letter1 eq 'A') { ... } if ($letter1 eq 'C') { ... } if ($letter1 eq 'T') { ... } # ... #### for (my $k=0;$k<$number_positions; $k++) { my (%base1, %base2); # ... $letter1 = uc $letter1; $letter2 = uc $letter2; push @${$base1{$letter1}}, $letter1; push @${$base2{$letter2}}, $letter2; #### for (my $k=0;$k<$number_positions; $k++) { my (%base1, %base2); # ... $base1{uc $letter1}++; $base2{uc $letter2}++; #### "$number_a" + "$number_c" + "$number_t" + "$number_g" + "$number_n" #### $number_a + $number_c + $number_t + $number_g + $number_n #### $base1{A} + $base1{C} + $base1{T} + $base1{G} + $base1{N} #### my $total1 = $base1{A} + $base1{C} + $base1{T} + $base1{G} + $base1{N}; #### my %percent1 = ( A => ($base{A} * 100) / $total1, C => ($base{C} * 100) / $total1, T => ($base{T} * 100) / $total1, G => ($base{G} * 100) / $total1, N => ($base{N} * 100) / $total1, ); #### my %percent1 = map { $_ => ( $base{$_} * 100) / $total1 } 'A', 'C', 'T', 'G', 'N'; #### my %percent1 = map { $_ => ( $base1{$_} * 100) / $total1 } qw(A C T G N); #### #!/usr/bin/perl use warnings; use strict; chomp(my $input = ); open(INPUT, "$input") or die "Cannot open file: $!"; chomp(my $number_positions = ); chomp(my $patient_number = ); chomp(my $output = ); open(OUTPUT, ">$output.txt") or die "Cannot open file: $!"; my @prettybase = ; close(INPUT); for my $k (0 .. $number_positions - 1) { my (%base1, %base2); for my $i (0 .. $patient_number) { my ($position, $patient, $letter1, $letter2) = split (/\t/, $prettybase[$i]); $base1{uc $letter1}++; $base2{uc $letter2}++; } my $total1 = $base1{A} + $base1{C} + $base1{T} + $base1{G} + $base1{N}; my %percent1 = map { $_ => ( $base1{$_} * 100) / $total1 } qw(A C T G N); my $total2 = $base2{A} + $base2{C} + $base2{T} + $base2{G} + $base2{N}; my %percent2 = map { $_ => ( $base2{$_} * 100) / $total2 } qw(A C T G N); print OUTPUT "Position\#\: $patient\n"; print OUTPUT "\tAllele 1 Allele 1 percentage\n"; for(qw(A C T G N)) { print OUTPUT "$_:\t$base1{$_}\t$percent1{$_}\%\n\n"; } print OUTPUT "\tAllele 2 Allele 2 percentage\n"; for(qw(A C T G N)) { print OUTPUT "$_:\t$base2{$_}\t$percent2{$_}\%\n\n"; } } close(OUTPUT);