Commit | Line | Data |
12b60feb |
1 | package t::early1_x; |
2 | use strict; |
3 | use warnings; |
4 | sub import { |
5 | require Devel::Declare; |
6 | my $caller = caller(); |
7 | Devel::Declare->setup_for($caller, { |
8 | class => { |
9 | const => sub { |
10 | my ($kw, $off) = @_; |
11 | $off += Devel::Declare::toke_move_past_token($off); |
12 | $off += Devel::Declare::toke_skipspace($off); |
13 | die unless substr(Devel::Declare::get_linestr(), $off, 1) eq '{'; |
14 | my $l = Devel::Declare::get_linestr(); |
15 | substr $l, $off + 1, 0, 'pass q[injected];' . (';' x 1000); |
16 | Devel::Declare::set_linestr($l); |
17 | my $class = sub (&) { $_[0]->() }; |
18 | no strict 'refs'; |
19 | *{ "${caller}::$kw" } = $class; |
20 | }, |
21 | }, |
22 | }); |
23 | } |
24 | |
25 | 1; |