Во время разработки мне нравится встраивать операторы printf в стратегические места (не слишком много), которые активируются с помощью флага отладки, например:
printf("h='$h', j='$j', ... (%d)\n", __LINE__) if $debug;
где флаг отладки определен в верхней части скрипта:
my $debug = $ENV{DEBUG} || 0;
Теперь вместо того, чтобы помнить о необходимости закомментировать все строки printf, я просто запускаю скрипт следующим образом:
DEBUG=1 ./script.pl
После тестирования, когда все готово к производству, строки отладки можно удалить:
cat script.pl | grep -v 'if $debug;'