=head1 VERSION
-Version 0.02
+Version 0.03
=cut
our $VERSION;
BEGIN {
- $VERSION = '0.02';
+ $VERSION = '0.03';
}
=head1 SYNOPSIS
+ { package Str; }
+
+ {
+ package My::Types::Str;
+
+ sub new { bless { }, shift }
+ }
+
+ use Lexical::Types as => sub { 'My::Types::' . $_[0] => 'new' };
+
+ my Str $x; # $x is now a My::Types::Str object
+
{
- package Str;
+ package My::Types::Int;
- sub TYPEDSCALAR { Some::String::Implementation->new }
+ sub TYPEDSCALAR { bless { }, shift }
}
use Lexical::Types;
- my Str $x; # $x is now a Some::String::Implementation object
+ use constant Int => 'My::Types::Int';
+
+ my Int $y; # $y is now a My::Types::Int object
=head1 DESCRIPTION
-This module allows you to hook the execution of typed lexicals declarations (C<my Str $x>).
+This pragma allows you to hook the execution of typed lexicals declarations (C<my Str $x>).
In particular, it can be used to automatically tie or bless typed lexicals.
It is B<not> implemented with a source filter.
either an empty list, in which case the current typed lexical definition will be skipped (thus it won't be altered to trigger a run-time hook) ;
- use Lexical::Types as => sub { return $_[0] =~ /Str/ ? () : @_ };
- my Str $x; # nothing special
- my Int $y; # calls Int->TYPEDSCALAR
+ use Lexical::Types as => sub { return $_[0] =~ /Str/ ? @_ : () };
+ my Str $y; # calls Str->TYPEDSCALAR
+ my Int $x; # nothing special
=item *
=head2 C<unimport>
Magically called when writing C<no Lexical::Types>.
-Turns the module off.
+Turns the pragma off.
=cut