X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FLexical%2FTypes.pm;h=e935d3880a124e6b1ce213f2a6b4575f78d37b7e;hb=e969ec4cc563f70e92f4428bfc01528de9b8ceb9;hp=c5bca1e792a0621ea31e10916e0c60f68476cf8d;hpb=7a753d187ec273e873d5d8a8afb9e48fed7d1955;p=perl%2Fmodules%2FLexical-Types.git diff --git a/lib/Lexical/Types.pm b/lib/Lexical/Types.pm index c5bca1e..e935d38 100644 --- a/lib/Lexical/Types.pm +++ b/lib/Lexical/Types.pm @@ -13,13 +13,13 @@ Lexical::Types - Extend the semantics of typed lexicals. =head1 VERSION -Version 0.03 +Version 0.04 =cut our $VERSION; BEGIN { - $VERSION = '0.03'; + $VERSION = '0.04'; } =head1 SYNOPSIS @@ -214,6 +214,37 @@ You can integrate L in your module so that using it will provide sub new_int { ... } +If you prefer to use constants rather than creating empty packages, you can replace the previous example with something like this : + + package MyTypes; + + BEGIN { require Lexical::Types; } + + sub import { + my $pkg = caller; + for (qw/Str Int/) { + my $type = __PACKAGE__ . '::' . $_; + no strict 'refs'; + no warnings 'redefine'; + *{$pkg.'::'.$_} = eval "sub () { '$type' }"; + } + Lexical::Types->import( + as => sub { $_[0] => 'new' } + ); + } + + sub unimport { + Lexical::Types->unimport; + } + + package MyTypes::Str; + + sub new { ... } + + package MyTypes::Int; + + sub new { ... } + =head1 CAVEATS For C to be able to parse C, you need :