Cuando se invoca el switch -d, perl corre el programa bajo un depurador simbólico (escrito en perl) algo parecido en sintaxis al sdb. Entre otras cosas, se pueden colocar Breakpoints, examinar o cambiar variables e imprimir llamadas anteriores a subrutinas. Debido a que utiliza eval sobre el código, se puede ejecutar cualquier código de perl desde el depurador.
Usando paquetes, se pueden escribir módulos con nombres separados para evitar conflictos de nombres en las rutinas de las librerías. El depurador utiliza esto para para mantener sus variables separadas de las del programador. Las variables son accesadas por medio de la notación del paquete como en esta linea del depurador :
$DB'stop[$DB'line] =~ s/;9$//;