use strict; package EvalTest; use selfvars; sub new { return bless {}, $self; } sub in { my ($n) = @args; $self->{n} = $n; } sub out { return $self->{n}; } sub out2 { return eval { return $self->{n} }; } sub out3 { return eval '$self->{n}'; } sub out4 { return eval { eval '$self->{n}'; }; } sub out5 { eval { eval { $self->{n} }; }; } sub out6 { eval q{eval '$self->{n}'}; } sub out7 { eval q{eval {$self->{n}}}; } my $depth = 20; sub out8 { if ($depth == 0) { return eval { $self->{n}; }; } $depth--; return eval { $self->out8; }; } 1;