Skip to content

Instantly share code, notes, and snippets.

@LadyAleena
Last active August 1, 2020 08:12
Show Gist options
  • Save LadyAleena/3f28a12836f14a872235bbc07ef24e59 to your computer and use it in GitHub Desktop.
Save LadyAleena/3f28a12836f14a872235bbc07ef24e59 to your computer and use it in GitHub Desktop.
#!/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