Spoilers:
Update: and here's an answer for 8, although you
might take it as cheating as it requires an adittional option on the command line to be set.
perl -wde 'sub DB::DB { ++$foo==2 and die "break out the eval"; }; !ev
+al { [ @foo ] } and print "Ok!\n"; '
Note that I'm not just executing the print Ok statement with some trick. The expression !eval { [ @foo ] } actually gets evaluated, but somehow an exception gets generated inside the eval, thus eval returns false.
Update: you can give the switch in the shebang line too.
If you write this to a file and execute it with perl, it works.