#!/usr/bin/env perl use strict; use warnings; use 5.016; my %mass = qw( A 71.03711 C 103.00919 D 115.02694 E 129.04259 F 147.06841 G 57.02146 H 137.05891 I 113.08406 K 128.09496 L 113.08406 M 131.04049 N 114.04293 P 97.05276 Q 128.05858 R 156.10111 S 87.03203 T 101.04768 V 99.06841 W 186.07931 Y 163.06333 ); my %protein = map { val($mass{$_}) - 1 => $_, val($mass{$_}) => $_, val($mass{$_}) + 1 => $_, } keys %mass; chomp(my $prev = <>); while (<>) { chomp; my $diff = val($_) - val($prev); print $protein{$diff}; $prev = $_; } sub val { int($_[0] * 10000 + 0.5) }