#!/usr/bin/perl use strict; use warnings; use autodie; my $header = ''; my (@headers_found, %header_data); open my $fasta_fh, '<', $ARGV[0]; while (<$fasta_fh>) { chomp; next if /^\s*($|#)/; if (/^>(.*)$/) { push @headers_found, ($header = $1); } else { die 'Sequence data found without a header!' unless $header; for (split '', "\U$_") { /(?[BDEZ])|(?[KRH])|(?[AVLI])|(?[FHYW])|(?[DEHKNQRSTZ])|(?[ACFGILMPVWY])/; if ($_ =~ /(?[XUGJOP])/){ next;} ++$header_data{$header}{(keys %+)[0]}; } } } close $fasta_fh; for (@headers_found) { print STDERR "\n\nHeader: $_"; print STDERR "\nAcidic: $header_data{$_}{a}"; print STDERR "\nBasic: $header_data{$_}{b}"; print STDERR "\nAliphatic: $header_data{$_}{ali}"; print STDERR "\nAromatic: $header_data{$_}{aro}"; print STDERR "\nPolar: $header_data{$_}{po}"; print STDERR "\nNonpolar: $header_data{$_}{nonpo}"; print STDERR "\nUnknown: $header_data{$_}{u}" if defined $header_data{$_}{u}; }