use strict;
use warnings;
use Text::Soundex;
use User::pwent;

my ($uent, $user, $vorname, $name);
chomp($user = $ARGV[0]);
exit unless defined $user;
my $code = soundex($user);

while ($uent = getpwent())
  {
  ($vorname, $name) = $uent->gecos =~ /(\w+)[^,]*\b(\w+)/;
  if ($code eq soundex($uent->name) ||
      (defined($name) && ($code eq soundex($name))) ||
      (defined($name) && ($code eq soundex($vorname))))
    { printf "%d %s: %s %s\n", $uent->uid(), $uent->name(),
                            $vorname, $name; }
  }
