https://linuxsandbox.coleman.edu/~ad77260/cgi-bin/COM330-77260-03.pl