my $greet = "Hello World"; eval ' print "$greet\n"; '; #### eval 'print "$gr' . 'eet\n";'; #### my $name = $greet; eval 'print "$' . $name . '\n";'; #### $ perl -E' use warnings; use strict; sub f { my $n="ok"; sub { eval q{$n} } } say f->() ' Variable "$n" is not available at (eval 1) line 2. Use of uninitialized value in say at -e line 4. $ perl -E' use warnings; use strict; sub f { my $n="ok"; sub { $n; eval q{$n} } } say f->() ' Useless use of private variable in void context at -e line 3. ok $ perl -E' use warnings; use strict; sub f { my $n="ok"; sub { $n if 0; eval q{$n} } } say f->() ' ok