--- /dev/null
+## name Basic failure
+## failures 9
+## cut
+
+eval { foo; };
+{ eval { baz; } };
+[ eval { buz; } ];
+( eval { blrfl; } );
+
+eval 'foo;';
+{ eval 'baz;' };
+[ eval 'buz;' ];
+( eval 'blrfl;' );
+
+eval { something };
+if ($@) {
+ blahblah
+}
+
+#-----------------------------------------------------------------------------
+
+## name Assignment
+## failures 0
+## cut
+
+$result = eval { foo; };
+@result = eval { bar; };
+$result = { eval { baz; } };
+$result = [ eval { buz; } ];
+@result = ( 0, eval { blrfl; } );
+@result = [ qw< one two >, { thrpt => ( eval { frlbfrnk; } ) } ];
+
+$result = eval 'foo;';
+@result = eval 'bar;';
+$result = { eval 'baz;' };
+$result = [ eval 'buz;' ];
+@result = ( 0, eval 'blrfl;' );
+@result = [ qw< one two >, { thrpt => ( eval 'frlbfrnk;' ) } ];
+
+#-----------------------------------------------------------------------------
+
+## name Assignment with comma separated statements.
+## failures 12
+## cut
+
+$result = 1, eval { foo; };
+@result = 1, eval { bar; };
+$result = 1, { eval { baz; } };
+$result = 1, [ eval { buz; } ];
+@result = 1, ( eval { blrfl; } );
+@result = 1, [ qw< one two >, { thrpt => ( eval { frlbfrnk; } ) } ];
+
+$result = 1, eval 'foo;';
+@result = 1, eval 'bar;';
+$result = 1, { eval 'baz;' };
+$result = 1, [ eval 'buz;' ];
+@result = 1, ( eval 'blrfl;' );
+@result = 1, [ qw< one two >, { thrpt => ( eval 'frlbfrnk;' ) } ];
+
+#-----------------------------------------------------------------------------
+
+## name if
+## failures 0
+## cut
+
+if ( eval { bar; } ) {
+ something
+}
+
+if ( ( eval { blrfl; } ) ) {
+ something
+}
+
+if ( 5 == eval { bar; } ) {
+ something
+}
+
+if ( scalar ( eval { blrfl; } ) ) {
+ something
+}
+
+if ( not eval { whatever; } ) {
+ something
+}
+
+
+
+if ( eval 'bar;' ) {
+ something
+}
+
+if ( ( eval 'blrfl;' ) ) {
+ something
+}
+
+if ( 5 == eval 'bar;' ) {
+ something
+}
+
+if ( scalar ( eval 'blrfl;' ) ) {
+ something
+}
+
+if ( ! eval 'whatever;' ) {
+ something
+}
+
+#-----------------------------------------------------------------------------
+
+## name foreach
+## failures 0
+## cut
+
+foreach my $thingy ( eval { bar; } ) {
+ something
+}
+
+foreach my $thingy ( ( eval { blrfl; } ) ) {
+ something
+}
+
+foreach my $thingy ( qw< one two >, eval { bar; } ) {
+ something
+}
+
+
+foreach my $thingy ( eval 'bar;' ) {
+ something
+}
+
+foreach my $thingy ( ( eval 'blrfl;' ) ) {
+ something
+}
+
+foreach my $thingy ( qw< one two >, eval 'bar;' ) {
+ something
+}
+
+#-----------------------------------------------------------------------------
+
+## name C-style for with eval in condition or assignment
+## failures 0
+## cut
+
+for (blah; eval { bar; }; blah ) {
+ something
+}
+
+for (blah; ( eval { blrfl; } ); blah ) {
+ something
+}
+
+for (blah; eval { bar; } eq 'bing bang bong'; blah ) {
+ something
+}
+
+for (my $x = eval { thrp; }; $x < 1587; $x = eval { thrp; } ) {
+ something
+}
+
+
+for (blah; eval 'bar;'; blah ) {
+ something
+}
+
+for (blah; ( eval 'blrfl;' ); blah ) {
+ something
+}
+
+for (blah; eval 'bar;' eq 'bing bang bong'; blah ) {
+ something
+}
+
+for (my $x = eval 'thrp;'; $x < 1587; $x = eval 'thrp;' ) {
+ something
+}
+
+#-----------------------------------------------------------------------------
+
+## name C-style for with eval in initialization or increment with no assignment
+## failures 4
+## cut
+
+for (eval { bar; }; blah; blah) {
+ something
+}
+
+for ( blah; blah; ( eval { blrfl; } ) ) {
+ something
+}
+
+
+for (eval 'bar;'; blah; blah) {
+ something
+}
+
+for ( blah; blah; ( eval 'blrfl;' ) ) {
+ something
+}
+
+#-----------------------------------------------------------------------------
+
+## name while
+## failures 0
+## cut
+
+while ( eval { bar; } ) {
+ something
+}
+
+while ( ( ( eval { blrfl; } ) ) ) {
+ something
+}
+
+
+while ( eval 'bar;' ) {
+ something
+}
+
+while ( ( ( eval 'blrfl;' ) ) ) {
+ something
+}
+
+#-----------------------------------------------------------------------------
+
+## name Postfix if
+## failures 0
+## cut
+
+bleah if eval { yadda; };
+bleah if ( eval { yadda; } );
+bleah if 5 == eval { yadda; };
+bleah if eval { yadda; } == 5;
+
+bleah if eval 'yadda;';
+bleah if ( eval 'yadda;' );
+bleah if 5 == eval 'yadda;';
+bleah if eval 'yadda;' == 5;
+
+#-----------------------------------------------------------------------------
+
+## name Postfix foreach
+## failures 0
+## cut
+
+blargh($_) foreach eval { bar; };
+blargh($_) foreach ( eval { blrfl; } );
+blargh($_) foreach qw< one two >, eval { bar; };
+blargh($_) foreach eval { bar; }, qw< one two >;
+
+blargh($_) foreach eval 'bar;';
+blargh($_) foreach ( eval 'blrfl;' );
+blargh($_) foreach eval 'bar;', qw< one two >;
+
+#-----------------------------------------------------------------------------
+
+## name First value in comma-separated list in condition
+## failures 4
+## cut
+
+if ( eval { 1 }, 0 ) {
+ blah blah blah
+}
+
+if ( ( eval { 1 }, 0 ) ) {
+ blah blah blah
+}
+
+if ( eval '1', 0 ) {
+ blah blah blah
+}
+
+if ( ( eval '1', 0 ) ) {
+ blah blah blah
+}
+
+#-----------------------------------------------------------------------------
+
+## name Last value in comma-separated list in condition
+## failures 0
+## cut
+
+if ( 0, eval { 1 }, ) {
+ blah blah blah
+}
+
+# Comma outside inner parentheses.
+if ( ( 0, eval { 1 } ), , ) {
+ blah blah blah
+}
+
+if ( 0, eval '1', ) {
+ blah blah blah
+}
+
+# Comma inside inner parentheses.
+if ( ( 0, eval '1', , ) ) {
+ blah blah blah
+}
+
+#-----------------------------------------------------------------------------
+
+## name Last value in comma-separated list that isn't the last element in another list in condition
+## failures 4
+## cut
+
+if ( ( 0, eval { 1 } ), 0 ) {
+ blah blah blah
+}
+
+if ( ( ( 0, eval { 1 } ) ), 0 ) {
+ blah blah blah
+}
+
+if ( ( 0, eval '1' ), 0 ) {
+ blah blah blah
+}
+
+if ( ( ( 0, eval '1' ) ), 0 ) {
+ blah blah blah
+}
+
+#-----------------------------------------------------------------------------
+
+## name "Proper" handling of return value
+## failures 0
+## cut
+
+eval {
+ something
+}
+ or do {
+ if ($EVAL_ERROR) {
+ yadda
+ }
+ else {
+ blahdda
+ };
+
+eval "something_else" or die;
+
+# eval gets the thing following it before || does.
+eval {
+ something
+}
+ || do {
+ if ($EVAL_ERROR) {
+ yadda
+ }
+ else {
+ blahdda
+ }
+ };
+
+eval "something_else" || die;
+
+
+eval {
+ something
+}
+ and do {
+ yadda
+ };
+
+eval "something_else" and thingy;
+
+# eval gets the thing following it before && does.
+eval {
+ something
+}
+ && do {
+ yadda
+ };
+
+eval "something_else" && die;
+
+#-----------------------------------------------------------------------------
+
+##############################################################################
+# $URL: http://perlcritic.tigris.org/svn/perlcritic/trunk/Perl-Critic/t/ErrorHandling/RequireCheckingReturnValueOfEval.run $
+# $Date: 2008-06-30 00:37:19 -0500 (Mon, 30 Jun 2008) $
+# $Author: clonezone $
+# $Revision: 2484 $
+##############################################################################
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 78
+# indent-tabs-mode: nil
+# c-indentation-style: bsd
+# End:
+# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :