#!/usr/bin/perl use warnings; use strict; my %players; while () { my ($team, $left, $right) = m{(.+)=(.+?) */ *(.+)}; my @lefts = split / *, */, $left; my @rights = split / *, */, $right; $players{$_}{left} = $team for @lefts; $players{$_}{right} = $team for @rights; } for my $player (keys %players) { if (2 == grep exists $players{$player}{$_}, qw/left right/) { print "$player IS IN $players{$player}{right} AND", " $players{$player}{left}\n"; } } __DATA__ Team1=Joe / Phil , Amenda Team2=James / Pam, Joe Team3=Carmen , Lisa / James Team4=Don , Phil / Carmen Team5=Uri , Kate / Don