Sie sind nicht angemeldet.

  • Anmelden

1

19.12.2009, 12:53

Perl !

Sers,

ich muss eine kleine PHP Anwendung, die auf OO PHP beruht, neu in Perl umsetzen. Ich habe gute Kentnisse in OOP, Java, Php, Javascript... Perl ist mir neu und ich krieg das Kotzen, wenn cih mir die ganzen Tutorials durchlese. Ständig wird der Misst, den die da vorprogrammieren, nicht erklärt... deswegen würde ich mich sehr freuen, wenn mir jemand den Sinn von manchen Sachen erklären würde.

Zitat

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


Wofür ist die Zeile "my $self = {}; " denn gut? Braucht man diese ?
(wäre es sowieso nicht bei weitem geschickter hier garkein Array, sondern für jedes "Feld" (wie z. B. NAME) eine eigene Variable über my $name = undef; zu deklarieren?

Weiter:

Zitat

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

Wieso reicht es nicht aus, einfach nur die letzte return Zeile zu schreiben? Was wird da durch die Gegend geshiftet?

In Perl gibt es keine private/public Deklarierung?

Wenn ich eine "Controller" Klasse habe, diese noch auf eine "Modul" Klassse und deren Funktionen zurück greift, dann muss ich diese ganz oben per "use Modul" einfügen, richtig?

Perl X(

Zitat

So einmal im Monat mit den Tieren im Fluß waschen wenn es "dein Herr" befiehlt Ragna?

Icey

Beiträge: 2 649

Wohnort: Berliner Rotweingürtel

Beruf: GER

  • Nachricht senden

2

19.12.2009, 13:11

Hier wird doch alles erklärt:

http://de.selfhtml.org/perl/sprache/objekte.htm

Ansonsten: Ich finde Perl klasse :D

Tsu_G_

Erleuchteter

Beiträge: 3 935

Wohnort: Berlin

Beruf: /dev/random

  • Nachricht senden

3

19.12.2009, 13:19

$self ist ein zeiger.
mit my $xyz = {} deklarierst du eine variable als zeiger.
macht aber eigentlich auch als einziges sinn, wenn man sich den code als PHP'ler so anschaut ;).

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tsu_G_« (19.12.2009, 13:21)


4

19.12.2009, 14:55

:kotz:

Das macht echt keine Spaß, eine neue und komplett dumme ;) Sprache zu lernen.

Ich möchte z. B. folgende Klasse deklarieren:
package Test;

my $id = undef;

sub new {
my $class = shift;
$id = shift;
my $ref = {};
bless($ref,$class);
return($ref);
}

sub getId {
return $id;
}

Würde das funktionieren? (ich kann gerade leider nicht auf die VM an der Uni verbinden, deswegen kann ichs net testen)

Oder müsse ich erstmal per shift (in getId Methode) die Referenz einholen und über die Referenz nach Variablen fragen? (die ich vorher im Konstruktor z. B. eingespeichert habe)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »ZwerG_Michi_de« (19.12.2009, 14:55)