[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