use warnings;
use 5.008001;
-our $VERSION = '0.004000';
+our $VERSION = '0.005011';
use constant DECLARE_NAME => 1;
use constant DECLARE_PROTO => 2;
where 'method' is a subroutine that takes a code block. Spot the problem?
The first one doesn't have a semicolon at the end of it! Unlike 'sub' which
is a builtin, this is just a normal statement, so we need to terminate it.
-Luckily, using the bastard spawn of L<Scope::Guard> and some hints hash
-hackery, we can do this!
+Luckily, using C<B::Hooks::EndOfScope>, we can do this!
- use Scope::Guard;
+ use B::Hooks::EndOfScope;
We'll add this to what gets 'injected' at the beginning of the method source.
return ' BEGIN { MethodHandlers::inject_scope }; ';
}
-So at the beginning of every method, we assing a callback that will get invoked
+So at the beginning of every method, we are passing a callback that will get invoked
at the I<end> of the method's compilation... i.e. exactly then the closing C<'}'>
is compiled.
sub inject_scope {
- $^H |= 0x120000;
- $^H{DD_METHODHANDLERS} = Scope::Guard->new(sub {
+ on_scope_end {
my $linestr = Devel::Declare::get_linestr;
my $offset = Devel::Declare::get_linestr_offset;
substr($linestr, $offset, 0) = ';';
Devel::Declare::set_linestr($linestr);
- });
+ };
}
=head2 Shadowing each method.
=head1 AUTHORS
-Matt S Trout - <mst@shadowcat.co.uk> - original author
+Matt S Trout - E<lt>mst@shadowcat.co.ukE<gt> - original author
Company: http://www.shadowcat.co.uk/
Blog: http://chainsawblues.vox.com/
Florian Ragwitz E<lt>rafl@debian.orgE<gt> - maintainer
-osfameron E<lt>osfameron@cpan.org<gt> - first draft of documentation
+osfameron E<lt>osfameron@cpan.orgE<gt> - first draft of documentation
-=head1 LICENSE
+=head1 COPYRIGHT AND LICENSE
This library is free software under the same terms as perl itself
+Copyright (c) 2007, 2008, 2009 Matt S Trout
+
+Copyright (c) 2008, 2009 Florian Ragwitz
+
+stolen_chunk_of_toke.c based on toke.c from the perl core, which is
+
+Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others
+
=cut
1;