lwicks has asked for the wisdom of the Perl Monks concerning the following question:


I have some scripts that I have started unit-testing using the "modulino" idea. I have encountered a problem in that when the script is called with "perl -d" the script does not run as caller() returns a true value.

I have the main body of the script wrapped in a main() and some subroutines being slowly pulled out of the main() into their own subroutines.

At the top of the script I have:

main(@ARGS) unless caller();
When called in .t tests it works as I want, not running main() so I can test the subroutines. When I call the script from CLI it works great calling main().

The problem occurs when I call it from the CLI with:

perl -d
At this stage caller returns a valid value (rather than undef) and main is not called. :-(

Suggestions would be much appreciated about how to approach this one.


Kia Kaha, Kia Toa, Kia Manawanui!
Be Strong, Be Brave, Be perservering!