I am implementing a CLI tool using Perl. What are the best-practices we can follow here?
There are a couple of modules on CPAN that will make writing CLI programs a lot easier:
If you app is Moose based also have a look at MooseX::Getopt and MooseX::Runnable