NAME
Devel::Hints - Access compile-time hints at runtime
VERSION
This document describes version 0.02 of Devel::Hints, released January 30, 2003.
SYNOPSIS
use Devel::Hints ':all';
LABEL:
print cop_label(); # 'LABEL'
print cop_seq(); # some integer
$[ = 10;
print cop_arybase(); # 10
#line 100
print cop_line(); # 100
use warnings;
print cop_warnings(); # same as compile-time ${^WARNING_BITS}
use open IO => ':utf8';
print cop_io(); # same as compile-time ${^OPEN}
{
use IO => ':raw';
print cop_io(1); # access one uplevel; still ":utf8\0:utf8"
}
DESCRIPTION
This module exports the cop
struct as individual functions; callers can call them to find out the lexical-scoped hints that its block is compiled under.
No functions are exported by default. Each function may take an optional positive integer as argument, indicating how many blocks it should walk upward to obtain the cop
members.
FUNCTIONS
- cop_label
-
Label for the current construct.
- cop_seq
-
Parse sequencial number.
- cop_arybase
-
Array base the calling line was compiled with.
- cop_line
-
Line # of the calling command.
- cop_warnings
-
Lexical warnings bitmask, a.k.a.
${^WARNING_BITS}
. - cop_io
-
Lexical IO defaults, a.k.a.
${^OPEN}
.
CAVEATS
The two other members (cop_stashpv
and cop_file
under ithreads, cop_stash
and cop_filegv
otherwise) are not exported.
ACKNOWLEDGMENTS
Thanks to Rafael Garcia-Suarez for demonstrating how to do this with the elegant Inline.pm-based code on p5p, which I adapted to this less elegant XS implementation.
AUTHORS
Autrijus Tang <autrijus@autrijus.org>
COPYRIGHT
Copyright 2003 by Autrijus Tang <autrijus@autrijus.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.