perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 28
Click for quality!




11.02.2012 / 12:01

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragOO, debug
Seitenanfang
Hi,

habe hier eine leicht geänderte Person.pm Klasse die aber mehr tut als sie sollte:


package Person;
use strict;
use Carp;

my $debug = 0;

sub new
{
my $class = shift @_;
my $self = {};
$self->{NAME} = undef;
$self->{AGE} = undef;
$self->{PEERS} = [];
bless($self, $class); # but see below
return $self;
}

sub debug
{
my $class = shift;
$debug = shift;
}

sub DESTROY
{
my $self = shift;
if ($debug)
{
carp "Destroying $self " . $self->name;
}
-- ${ $self->{"_CENSUS"} };
}

sub name
{
my $self = shift @_; #
if ($debug == 1)
{
print("debug aktiviert\n");
if (@_) { $self->{NAME} = shift }
}
else
{
if (@_) { $self->{NAME} = shift }
}
return $self->{NAME};
}

sub age
{
my $self = shift @_;
if (@_) { $self->{AGE} = shift }
return $self->{AGE};
}

sub peers
{
my $self = shift @_;
if (@_) { @{ $self->{PEERS} } = @_ }
return @{ $self->{PEERS} };
}
1;

Aufrufendes script:


use Person;
$him = Person->new();
$him->debug(1);
$him->name("monsti");
$him->age(99);
$him->peers( "friday", "shaky", "fettauge" );
push @All_Recs, $him; # save object in array for later
printf "%s is %d years old.\n", $him->name, $him->age;
print "His peers are: ", join(", ", $him->peers), "\n";
printf "Last rec's name is %s\n", $All_Recs[-1]->name;

Ausgabe:
perl Person-main.pl
debug aktiviert
debug aktiviert
monsti is 99 years old.
His peers are: friday, shaky, fettauge
debug aktiviert
Last rec's name is monsti
debug aktiviert
Destroying Person=HASH(0x815fc28) monsti at Person-main.pl line 0

Imho sollte "debug aktiviert" aber nur einmal ausgegeben werden, unzwar dann wenn die methode name aufgerunfen wird?

Datum: 03.08.2006-15:41

Beitragre: OO, debug
Seitenanfang
Das stimmt schon. Du rufst die name-Methode ja auch mehr mals auf und zwar

im Hauptprogramm:
1.) $him->name("monsti");
2.) printf "%s is %d years old.\n", $him->name, $him->age;
3.) printf "Last rec's name is %s\n", $All_Recs[-1]->name;

im Modul:
1.) carp "Destroying $self " . $self->name;

Macht insgesamt viermal die Ausgabe...

Datum: 04.08.2006-10:45

-






-
-