Last active
August 1, 2020 08:12
-
-
Save LadyAleena/3f28a12836f14a872235bbc07ef24e59 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl | |
use strict; | |
use warnings; | |
use List::MoreUtils qw(uniq); | |
sub get_generations { | |
my $person = shift; | |
my $last = pop @generations if $person !~ /mother|father/; | |
my @generational_people = map("${_}$person", @generations); | |
push @generations, $last if $last; | |
return @generational_people; | |
} | |
my %family_members = ( | |
'parents' => [qw(mother father)], | |
'children' => [qw(daughter son)], | |
'siblings' => [qw(sister brother)], | |
'niblings' => [qw(neice nephew)], | |
'piblings' => [qw(aunt uncle)], | |
'cousins' => ['cousin'], | |
'spouses' => [qw(wife husband)], | |
'friends' => [qw(girlfriend boyfriend)], | |
); | |
$family_members{'generational parents'} = [ map(get_generations($_), @{$family_members{'parents'}}) ]; | |
$family_members{'generational children'} = [ map(get_generations($_), @{$family_members{'children'}}) ]; | |
$family_members{'generational niblings'} = [ map(get_generations($_), @{$family_members{'niblings'}}) ]; | |
$family_members{'generational piblings'} = [ map(get_generations($_), @{$family_members{'piblings'}}) ]; | |
$family_members{'extended parents'} = [ | |
@{$family_members{'parents'}}, | |
map("step-$_", qw(mother father)), | |
map("${_}-in-law", qw(mother father)), | |
]; | |
$family_members{'extended children'} = [ | |
@{$family_members{'children'}}, | |
map("step-$_", qw(daughter son)), | |
map("${_}-in-law", qw(daughter son)), | |
]; | |
$family_members{'extended siblings'} = [ | |
@{$family_members{'siblings'}}, | |
map("step-$_", qw(sister brother)), | |
map("${_}-in-law", qw(sister brother)), | |
]; | |
$family_members{'extended spouses'} = [ | |
@{$family_members{'spouses'}}, | |
map("ex-$_", qw(wife husband)), | |
]; | |
$family_members{'extended friends'} = [ | |
@{$family_members{'friends'}}, | |
map("ex-$_", qw(girlfriend boyfriend)), | |
]; | |
$family_members{'all parents'} = [ | |
uniq( | |
@{$family_members{'generational parents'}}, | |
@{$family_members{'extended parents'}}, | |
) | |
]; | |
$family_members{'all children'} = [ | |
uniq( | |
@{$family_members{'generational children'}}, | |
@{$family_members{'extended children'}}, | |
) | |
]; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment