glycine, I second roboticus's suggestion for converting the data structures of your program to objects. (btw your first program complains about undeclared variables).
Your choice of the game of life as a starting application is good. It opens up a lot of possibilities - all realised through Perl and CPAN modules:
- Explore Curses and Term::Animation as a way to draw on text-based terminals. See for example my favourite: Ascii Acquarium by robobunny.
- Explore drawing your game of life output onto a series of png/jpeg files using GD which you can then put together as an animation video or write directly to an animated GIF using GD::Image::AnimatedGif
- Explore parallelism by creating an asynchronous game of life, as in Asynchronous_cellular_automaton . For this you can use Perl's threads or use a module such as MCE which also offers a nice way to share data between your threads using MCE::Shared. The author marioroy is regularly in the Monastery.
- Convert your script to CGI (using CGI or modern -- which may not work on basic free-hosting sites -- alternatives CGI::Alternatives) and host it to a free web-hosting server for anyone to use.
edit: removed unwanted underline