#!/usr/bin/env perl use strict; use warnings; use Test::More; BEGIN { package My::Parser; use Exporter 'import'; our @EXPORT = ('foo', 'bar'); use Parse::Keyword { foo => \&parse_foo, bar => \&parse_bar, }; sub foo {} sub parse_foo { lex_read_space; die unless lex_peek eq '{'; parse_block(1)->(); return (sub {}, 1); } sub bar { $::body = $_[0] } sub parse_bar { lex_read_space; die unless lex_peek eq '{'; my $body = parse_block; return (sub { $body }, 1); } $INC{'My/Parser.pm'} = __FILE__; } use My::Parser; my $bar; my $baz = 5; foo { bar { $baz } } is($::body->(), 5); done_testing;