User since
2003-08-04
14371
Artikel
ModeratorIn
Wenn ich in einem Modul über allen Subroutinen eine Variable deklariere, so ist diese für alle Objekte die gleiche (ähnlich dem static bei Java). Gibt es auch die Möglichkeit, eine Variable objektspezifisch zu machen??
So dass es ungefähr so aussieht:
package Test;
use strict;
use warnings;
my $objektspezifisch;
sub new{
my ($class) = @_;
my $self = {};
bless $self,$class;
print ++$objektspezifisch;
return $self;
}
#!/usr/bin/perl
use strict;
use warnings;
use Test;
my $obj1 = Test->new();
my $obj2 = Test->new();
Gewünschte Ausgabe:
Was denkst du, wofür du my $self = {}; machst? ;) Steht aber wohl auch alles in perldoc perlobj.
User since
2003-08-04
14371
Artikel
ModeratorIn
Ich habe gehofft, dass es vielleicht noch eine andere Möglichkeit gibt...
Was gefällt dir an dieser nicht?
User since
2003-08-04
14371
Artikel
ModeratorIn
Dass ich ein paar übernommene Module umschreiben muss ;)
Nur so als ungefähre Zeitabschätzung: Wieviele Posts dauert es noch, bis du mit einer genaueren Beschreibung von dem, was du willst, rausrückst? *g*
User since
2003-08-04
14371
Artikel
ModeratorIn
Ich denke, das war oben schon ganz gut beschrieben - was war denn daran unklar??... Ich wollte wissen, ob ich eine Variable oberhalb von allen Subroutinen objektspezifisch machen kann. Da Du geschrieben hast, dass das nicht geht, werde ich Module, die ich von Kollegen übernommen habe halt umschreiben...
Nunja, du wirst immer die Instanz benötigen um auf Instanzvariablen zuzugreifen. Geht's denn ernsthaft nur darum an welcher Stelle die Dinger stehen? Oder willst du die Zugriffe auf die Werte möglichst nicht umschreiben?
User since
2003-08-04
14371
Artikel
ModeratorIn
Ich wollte nur die Zugriffe nicht umschreiben. Ansonsten ist es mir egal, ob ich $self benutze oder nicht... ;)
Also abgesehen davon, dass du dann eben *nicht* gesagt hast, was du willst ( ;) ), wie sehen die Zugriffe denn momentan aus? Werden Funktionen für Zugriffe verwendet oder geht das einfach straight auf die Package Variablen? Im letzteren Falle wird wenig übrigbleiben, als Umzuschreiben.\n\n
<!--EDIT|phaylon|1125928999-->