The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


Language::Expr::Compiler::perl - Compile Language::Expr expression to Perl


This document describes version 0.29 of Language::Expr::Compiler::perl (from Perl distribution Language-Expr), released on 2016-07-03.


 use Language::Expr::Compiler::Perl;
 my $plc = Language::Expr::Compiler::Perl->new;
 print $plc->perl('1 ^^ 2'); # prints '1 xor 2'


Compiles Language::Expr expression to Perl code. Some notes:

  • Emitted Perl code version

    Emitted Perl code requires Perl 5.10 (it uses 5.10's "//" defined-or operator) and also the boolean module (it uses 'true' and 'false' objects).

  • Perliness

    The emitted Perl code will follow Perl's notion of true and false, e.g. the expression '"" || "0" || 2' will result to 2 since Perl thinks that "" and "0" are false. It is also weakly typed like Perl, i.e. allows '1 + "2"' to become 3.

  • Variables by default simply use Perl variables.

    E.g. $a becomes $a, and so on. Be careful not to make variables which are invalid in Perl, e.g. $.. or ${foo/bar} (but ${foo::bar} is okay because it translates to $foo::bar).

    You can customize this behaviour by subclassing rule_var() or by providing a hook_var() (see documentation in Language::Expr::Compiler::Base).

  • Functions by default simply use Perl functions.

    Unless those specified in func_mapping. For example, if $compiler->func_mapping->{foo} = "Foo::do_it", then the expression 'foo(1)' will be compiled into 'Foo::do_it(1)'.

    You can customize this behaviour by subclassing rule_func() or by providing a hook_func() (see documentation in Language::Expr::Compiler::Base).


compile($expr) => $perl_code

Convert Language::Expr expression into Perl code. Dies if there is syntax error in expression.

eval($expr) => any

Convert Language::Expr expression into Perl code and then eval() it.


Please visit the project's homepage at


Source repository is at


Please report any bugs or feature requests on the bugtracker website

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.


perlancar <>


This software is copyright (c) 2016 by

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.