La Sobrecarga de Constantes en Moose

{
  my $isint = qr{^\s*-?\d+\s*$};
  my $isfrac =  qr{^\s*(-?\d+)(/(-?\d+))?$};

  my %_const_handlers =
    (q => sub { 
                if ($_[1] =~ $isfrac) {
                  return __PACKAGE__->new(num => $1, den => $3 || 1) || $_[1];
                }   
                else { 
                  $_[1];
                }   
              }); 

  sub import {
    overload::constant %_const_handlers if $_[1] and $_[1] eq ':constants';
  }

  sub unimport {
    overload::remove_constant(q => undef);
  }

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19