Easily add tab completion feature to your CLI program using Getopt::Long::Complete
There are several modules to help you create command-line program with tab completion feature, including Getopt::Complete and Perinci::CmdLine (and its new lightweight alternative Perinci::CmdLine::Lite. Now here's another one. Introducing Getopt::Long::Complete.
This module is a drop-in replacement for the venerable Getopt::Long. Most of the time, you should be able to take your existing script which uses Getopt::Long, replace the use statement use Getopt::Long; with use Getopt::Long::Complete and suddenly your script supports tab completion.
For more details, see the module's POD.