NAME
    Devel::CompileLevel - Detect caller level of compiling code

SYNOPSIS
      package ExportToCompile;
      use strict;
      use warnings;
      use Devel::CompileLevel qw(compile_caller);

      sub import {
        my $target = compile_caller or die "not compiling!";
        strict->import;
        warnings->import;
        no strict 'refs';
        # will export to same level as strict/warnings are applied to
        *{"${target}::exported_sub"} = sub { ... };
      }

DESCRIPTION
    Detects the caller level where compilation is being performed. When
    applying pragmas in an import sub, they will be applied to the currently
    compiling scope. Some modules may want to both apply a pragma, and
    export functions. This requires knowing the package in that scope. It's
    usually possible to track this manually, but that won't always be
    accurate.

    This module can provide the caller level where compilation is happening,
    allowing you to always find the correct package.

FUNCTIONS
  compile_level ()
    Returns the distance to the code being compiled. This will start at 0 in
    a BEGIN block and increase for each sub call away. In an import sub, it
    will be 1 rather than the 0 that would normally be used with caller to
    find the caller's information. You must subtract 1 from this value to
    use it with caller.

  compile_caller ()
    Returns the caller information of the compiling code. This will give all
    the same information as the normal caller() builtin.

SEE ALSO
    *   Import::Into

AUTHOR
    haarg - Graham Knop (cpan:HAARG) <haarg@haarg.org>

CONTRIBUTORS
    None yet.

COPYRIGHT
    Copyright (c) 2015 the Devel::CompileLevel "AUTHOR" and "CONTRIBUTORS"
    as listed above.

LICENSE
    This library is free software and may be distributed under the same
    terms as perl itself.

