my @lines = <main::DATA>;

foreach my $line (@lines) {
  chomp($line);
  print "[" . (($line =~ m/(?=.*?(?<!@ )(\b\w+\b)).*\(@.*\1.*\)/)? "yes" : "no") . "]\t$1\t$line\n";
}

__DATA__
abc (@ abc )
abc (@ (& abc ) )
abc (& def (@ abc ) )
(& (& abc def ) (@ abc ) )
(& def (& abc ) (@ abc ) )
abc
(@ abc )
abc (@ def )
abc (& abc)
(@ abc ) abc
(@ abc ) (@ abc )