X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FLexical%2FTypes.pm;h=be4d71c26d30c2a484d6ae9b2688bb05b345b7a2;hb=e5180e775fa6b3bef100a42bd7899aba3627df8b;hp=c5bca1e792a0621ea31e10916e0c60f68476cf8d;hpb=7a753d187ec273e873d5d8a8afb9e48fed7d1955;p=perl%2Fmodules%2FLexical-Types.git diff --git a/lib/Lexical/Types.pm b/lib/Lexical/Types.pm index c5bca1e..be4d71c 100644 --- a/lib/Lexical/Types.pm +++ b/lib/Lexical/Types.pm @@ -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 :