##
sub uid_lastname {
my( $uid, $firstname ) = @_;
my @lastnames;
keys %$uid;
while( my( $key, $val ) = each %$uid ){
if( $val->{firstname} eq $firstname ){
push @lastnames, $val->{lastname};
}
}
return @lastnames if wantarray;
return $lastnames[0] if @lastnames;
die "firstname not found";
}
####
####
my $lastname = dpath( q{/*/firstname[ value =~ /Alice/i ]/../lastname} )->match( \%uid )
my $lastname = dpath( q{/*/firstname/.[ value eq 'Alice' ]/../lastname} )->match( \%uid ) ;