#!/usr/bin/perl use strict; use warnings; sub eval_depth { my $eval_depth = 0; my $frame = 0; while (my @caller_info = caller($frame++)) { if ($caller_info[3] eq '(eval)') { $eval_depth++; } } return $eval_depth; } print "no evals: ".eval_depth()."\n"; eval 'print "one eval :".eval_depth()."\n"'; eval q{ eval 'print "two evals:".eval_depth()."\n"'};