diff options
Diffstat (limited to 'examples/next-in-loop')
-rw-r--r-- | examples/next-in-loop/Error.pm-eval.pl | 40 | ||||
-rw-r--r-- | examples/next-in-loop/Error.pm-next-label.pl | 38 | ||||
-rw-r--r-- | examples/next-in-loop/Error.pm-next-out-of-catch.pl | 43 | ||||
-rw-r--r-- | examples/next-in-loop/Error.pm-next.pl | 37 | ||||
-rw-r--r-- | examples/next-in-loop/README | 3 |
5 files changed, 161 insertions, 0 deletions
diff --git a/examples/next-in-loop/Error.pm-eval.pl b/examples/next-in-loop/Error.pm-eval.pl new file mode 100644 index 0000000..87c67f7 --- /dev/null +++ b/examples/next-in-loop/Error.pm-eval.pl @@ -0,0 +1,40 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Error qw(:try); +use Scalar::Util qw(blessed); + +use IO::Handle; + +package MyError; + +use base 'Error'; + +package SecondError; + +use base 'Error'; + +package main; + +autoflush STDOUT 1; + +SHLOMIF_FOREACH: +foreach my $i (1 .. 100) +{ + eval + { + if ($i % 10 == 0) + { + throw MyError; + } + }; + my $E = $@; + if (blessed($E) && $E->isa('MyError')) + { + next SHLOMIF_FOREACH; + } + print "$i\n"; +} + diff --git a/examples/next-in-loop/Error.pm-next-label.pl b/examples/next-in-loop/Error.pm-next-label.pl new file mode 100644 index 0000000..1badf74 --- /dev/null +++ b/examples/next-in-loop/Error.pm-next-label.pl @@ -0,0 +1,38 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Error qw(:try); + +use IO::Handle; + +package MyError; + +use base 'Error'; + +package SecondError; + +use base 'Error'; + +package main; + +autoflush STDOUT 1; + +SHLOMIF_FOREACH: +foreach my $i (1 .. 100) +{ + try + { + if ($i % 10 == 0) + { + throw MyError; + } + } + catch MyError with + { + my $E = shift; + next SHLOMIF_FOREACH; + }; + print "$i\n"; +} diff --git a/examples/next-in-loop/Error.pm-next-out-of-catch.pl b/examples/next-in-loop/Error.pm-next-out-of-catch.pl new file mode 100644 index 0000000..019fe38 --- /dev/null +++ b/examples/next-in-loop/Error.pm-next-out-of-catch.pl @@ -0,0 +1,43 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Error qw(:try); + +use IO::Handle; + +package MyError; + +use base 'Error'; + +package SecondError; + +use base 'Error'; + +package main; + +autoflush STDOUT 1; + +SHLOMIF_FOREACH: +foreach my $i (1 .. 100) +{ + my $caught = 0; + try + { + if ($i % 10 == 0) + { + throw MyError; + } + } + catch MyError with + { + my $E = shift; + $caught = 1; + }; + if ($caught) + { + next SHLOMIF_FOREACH; + } + print "$i\n"; +} diff --git a/examples/next-in-loop/Error.pm-next.pl b/examples/next-in-loop/Error.pm-next.pl new file mode 100644 index 0000000..4a0bab3 --- /dev/null +++ b/examples/next-in-loop/Error.pm-next.pl @@ -0,0 +1,37 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Error qw(:try); + +use IO::Handle; + +package MyError; + +use base 'Error'; + +package SecondError; + +use base 'Error'; + +package main; + +autoflush STDOUT 1; + +foreach my $i (1 .. 100) +{ + try + { + if ($i % 10 == 0) + { + throw MyError; + } + } + catch MyError with + { + my $E = shift; + next; + }; + print "$i\n"; +} diff --git a/examples/next-in-loop/README b/examples/next-in-loop/README new file mode 100644 index 0000000..f13c21f --- /dev/null +++ b/examples/next-in-loop/README @@ -0,0 +1,3 @@ +This is a case study for various ways to implement a "next" command +inside one of the Error.pm clauses, which itself will be inside an +inner loop inside Error.pm. |