use strict; use warnings; my %pred; while () { chomp; my @items = split /-/, $_; my $first = $items[0]; for my $element (@items) { $pred{$element} = $first; } } print "$_ => $pred{$_}\n" for sort keys %pred; __DATA__ 123-234-345-456-567 117-228-339 131 213-324-435 372 #### $ perl predecessor.pl 117 => 117 123 => 123 131 => 131 213 => 213 228 => 117 234 => 123 324 => 213 339 => 117 345 => 123 372 => 372 435 => 213 456 => 123 567 => 123