The following are examples of pl_syscolors.d. This is a simple script to trace the flow of Perl subroutines and system calls made, and renders the output in color ("colour") using terminal escape sequences (which you can tweak by modifying the script). Here it traces the example program, Code/Perl/func_abc.pl. WARNING: This output is full of terminal escape sequences, so if you are trying to view this through an editor or web browser - it may look awful. Try viewing this using "more" (although, depending on your terminal, it still may look awful). # pl_syscolors.d C PID DELTA(us) FILE:LINE TYPE -- NAME 0 305181 2 ":- syscall -> munmap 0 305181 33 ":- syscall <- munmap 0 305181 59 ":- syscall -> mmap 0 305181 18 ":- syscall <- mmap 0 305181 35 ":- syscall -> setcontext 0 305181 8 ":- syscall <- setcontext 0 305181 8 ":- syscall -> getrlimit 0 305181 9 ":- syscall <- getrlimit 0 305181 8 ":- syscall -> getpid 0 305181 7 ":- syscall <- getpid 0 305181 64 ":- syscall -> setcontext 0 305181 6 ":- syscall <- setcontext 0 305181 137 ":- syscall -> sigpending 0 305181 8 ":- syscall <- sigpending 0 305181 1148 ":- syscall -> sysi86 0 305181 11 ":- syscall <- sysi86 0 305181 105 ":- syscall -> open64 0 305181 96 ":- syscall <- open64 0 305181 13 ":- syscall -> ioctl 0 305181 18 ":- syscall <- ioctl 0 305181 14 ":- syscall -> close 0 305181 14 ":- syscall <- close 0 305181 123 ":- syscall -> sigaction 0 305181 9 ":- syscall <- sigaction 0 305181 49 ":- syscall -> brk 0 305181 9 ":- syscall <- brk 0 305181 8 ":- syscall -> brk 0 305181 16 ":- syscall <- brk 0 305181 63 ":- syscall -> brk 0 305181 7 ":- syscall <- brk 0 305181 7 ":- syscall -> brk 0 305181 8 ":- syscall <- brk 0 305181 43 ":- syscall -> brk 0 305181 7 ":- syscall <- brk 0 305181 7 ":- syscall -> brk 0 305181 8 ":- syscall <- brk 0 305181 141 ":- syscall -> brk 0 305181 7 ":- syscall <- brk 0 305181 8 ":- syscall -> brk 0 305181 9 ":- syscall <- brk 0 305181 24 ":- syscall -> brk 0 305181 7 ":- syscall <- brk 0 305181 7 ":- syscall -> brk 0 305181 8 ":- syscall <- brk 0 305181 30 ":- syscall -> getuid 0 305181 7 ":- syscall <- getuid 0 305181 10 ":- syscall -> getuid 0 305181 6 ":- syscall <- getuid 0 305181 10 ":- syscall -> getgid 0 305181 7 ":- syscall <- getgid 0 305181 9 ":- syscall -> getgid 0 305181 6 ":- syscall <- getgid 0 305181 117 ":- syscall -> sysconfig 0 305181 9 ":- syscall <- sysconfig 0 305181 19 ":- syscall -> open64 0 305181 59 ":- syscall <- open64 0 305181 15 ":- syscall -> read 0 305181 11 ":- syscall <- read 0 305181 8 ":- syscall -> close 0 305181 8 ":- syscall <- close 0 305181 34 ":- syscall -> gtime 0 305181 7 ":- syscall <- gtime 0 305181 34 ":- syscall -> brk 0 305181 7 ":- syscall <- brk 0 305181 7 ":- syscall -> brk 0 305181 9 ":- syscall <- brk 0 305181 44 ":- syscall -> sysconfig 0 305181 7 ":- syscall <- sysconfig 0 305181 9 ":- syscall -> brk 0 305181 6 ":- syscall <- brk 0 305181 7 ":- syscall -> brk 0 305181 8 ":- syscall <- brk 0 305181 145 ":- syscall -> open64 0 305181 16 ":- syscall <- open64 0 305181 16 ":- syscall -> fcntl 0 305181 7 ":- syscall <- fcntl 0 305181 10 ":- syscall -> sigaction 0 305181 7 ":- syscall <- sigaction 0 305181 8 ":- syscall -> brk 0 305181 7 ":- syscall <- brk 0 305181 7 ":- syscall -> brk 0 305181 9 ":- syscall <- brk 0 305181 104 ":- syscall -> brk 0 305181 7 ":- syscall <- brk 0 305181 7 ":- syscall -> brk 0 305181 8 ":- syscall <- brk 0 305181 88 ":- syscall -> getpid 0 305181 7 ":- syscall <- getpid 0 305181 8 ":- syscall -> brk 0 305181 6 ":- syscall <- brk 0 305181 7 ":- syscall -> brk 0 305181 8 ":- syscall <- brk 0 305181 105 ":- syscall -> fstat64 0 305181 10 ":- syscall <- fstat64 0 305181 16 ":- syscall -> fstat64 0 305181 7 ":- syscall <- fstat64 0 305181 25 ":- syscall -> ioctl 0 305181 8 ":- syscall <- ioctl 0 305181 7 ":- syscall -> read 0 305181 23 ":- syscall <- read 0 305181 18 ":- syscall -> llseek 0 305181 8 ":- syscall <- llseek 0 305181 126 ":- syscall -> llseek 0 305181 7 ":- syscall <- llseek 0 305181 34 ":- syscall -> llseek 0 305181 7 ":- syscall <- llseek 0 305181 30 ":- syscall -> llseek 0 305181 7 ":- syscall <- llseek 0 305181 12 ":- syscall -> read 0 305181 8 ":- syscall <- read 0 305181 11 ":- syscall -> llseek 0 305181 6 ":- syscall <- llseek 0 305181 7 ":- syscall -> close 0 305181 8 ":- syscall <- close 0 305181 27 func_a:15 sub -> ./func_abc.pl 0 305181 36 ":- syscall -> ioctl 0 305181 7 ":- syscall <- ioctl 0 305181 8 ":- syscall -> fstat64 0 305181 8 ":- syscall <- fstat64 0 305181 8 ":- syscall -> brk 0 305181 7 ":- syscall <- brk 0 305181 7 ":- syscall -> brk 0 305181 9 ":- syscall <- brk 0 305181 23 ":- syscall -> fstat64 0 305181 7 ":- syscall <- fstat64 0 305181 13 ":- syscall -> gtime 0 305181 7 ":- syscall <- gtime 0 305181 11 ":- syscall -> nanosleep 0 305181 1007250 ":- syscall <- nanosleep 0 305181 24 ":- syscall -> gtime 0 305181 15 ":- syscall <- gtime 0 305181 21 func_b:9 sub -> ./func_abc.pl 0 305181 27 ":- syscall -> gtime 0 305181 6 ":- syscall <- gtime 0 305181 8 ":- syscall -> nanosleep 0 305181 1009847 ":- syscall <- nanosleep 0 305181 24 ":- syscall -> gtime 0 305181 15 ":- syscall <- gtime 0 305181 21 func_c:4 sub -> ./func_abc.pl 0 305181 27 ":- syscall -> gtime 0 305181 6 ":- syscall <- gtime 0 305181 8 ":- syscall -> nanosleep Function A Function B Function C 0 305181 1009916 ":- syscall <- nanosleep 0 305181 24 ":- syscall -> gtime 0 305181 15 ":- syscall <- gtime 0 305181 20 func_c:4 sub <- ./func_abc.pl 0 305181 29 func_b:9 sub <- ./func_abc.pl 0 305181 12 func_a:15 sub <- ./func_abc.pl 0 305181 51 ":- syscall -> schedctl 0 305181 53 ":- syscall <- schedctl 0 305181 16 ":- syscall -> setcontext 0 305181 8 ":- syscall <- setcontext 0 305181 21 ":- syscall -> write 0 305181 97 ":- syscall <- write 0 305181 28 ":- syscall -> open64 0 305181 101 ":- syscall <- open64 0 305181 9 ":- syscall -> ioctl 0 305181 10 ":- syscall <- ioctl 0 305181 10 ":- syscall -> close 0 305181 15 ":- syscall <- close 0 305181 35 ":- syscall -> rexit If the colors don't suit you (or you'd rather HTML colored output), it should be trivial to modify the script to do so.