[Cascavel-pm] get/set com AUTOLOAD

Joenio Marques joenio em gmail.com
Quarta Dezembro 28 09:52:15 PST 2005


Bem, fiz um exemplo que reproduz exatamente o que esta acontecendo.
Segue o codigo:


Classe com AUTOLOAD:

package Class;
use strict;
use overload qw("") => \&as_string;
sub AUTOLOAD {
    my $self = shift;
    my $attr = our $AUTOLOAD;
    $attr =~ s/.*://;
    $self->{$attr} = shift if @_;
    return $self->{$attr};
}
sub new {
    my $class = shift;
    my $auto = {
        id   => 0,
        nome => '',
    };
    bless($auto, $class);
    return $auto;
}
sub as_string {
    my $self = shift;
    return "\nId=   ". $self->id() .
              "\nNome= ". $self->nome() ."\n";
}
1;


Programa utilizando classe acima:

#!/usr/bin/perl
use strict;
use Class;
my $obj = Class->new();
my $string = "pegar id=1234 via regex";
$string =~ m/(\d+)/io;
#Nao Funciona
$obj->id($1);
$obj->nome('Joenio');
print $obj;
#Funciona
$obj->id("$1");
$obj->nome('Marques');
print $obj;


ps.: testei utilizar local p declarar a variavel $1 e deu no mesmo
(nao sei s fiz a coisa do jeito certo)


Att,
--
Joenio Marques
- Salvador Perl Mongers


Mais detalhes sobre a lista de discussão Cascavel-pm