https://github.com/drbaggy/perlweeklychallenge-club/blob/master/challenge-116/james-smith/