#!perl -w use strict; my $tokens = "32,15,4,72,13,28,14"; my %ranking = do { my $i; map { $_ => $i++ } split /,/, $tokens }; my ($default) = ($tokens =~ m/,(\d+)$/); # last token while (my $list = ) { chomp $list; my $best = $default; for my $b (split /,/, $list) { next unless defined $ranking{$b}; $best = $b if $ranking{$b} < $ranking{$best}; } print "$best\n"; } __DATA__ 4,13,15 4,50,15,13 50,60,70