#!/usr/bin/perl use strict; { local %_; while(){ chomp; if(/(\d+|[A-Z])$/){ $_{substr($_,0,(length($_)-length($1)))}->{$1} = $_; } } for(sort keys %_){ if(scalar(keys %{$_{$_}}) % 2 == 0){ local @_ = sort{$a <=> $b || ord($a) <=> ord($b)}keys %{$_{$_}}; for(my $i = 0; $i < scalar(@_); $i+=2){ if( ($_[$i] =~ /\d$/ && abs($_[$i] - $_[$i+1]) == 1) || (abs(ord($_[$i]) - ord($_[$i+1])) == 1) ){ print $_{$_}->{$_[$i]}.";".$_{$_}->{$_[$i+1]}."\n" ; print $_{$_}->{$_[$i+1]}.";".$_{$_}->{$_[$i]}."\n" ; } } } } } __DATA__ AAA30 BBC5 SHT12H DAL33B BBC49 AAA31 BBC8 BBC3 DAL33A BBC6 SHT12G BBC50