Philipp Hasenfratz: in Schleife Hash $key-> $value zuweisen

Beitrag lesen

Halihallo Andreas

BTW @Andreas:
Du hast momentan die Probleme, die jeder hat, der zum ersten mal von einer Sprache auf eine andere umsteigt. Du versuchst in Perl PHP-Code zu implementieren. Auch wenn die Syntax sehr ähnlich erscheint, so hat Perl doch einige andere Konzepte, in die Du erst hineinwachsen mußt. Mir erging es ähnlich, als ich von C her Perl anging. Aber das wird schon, und irgendwann wirst auch Du in Perl denken;-)

Ja, da hast Du recht, es ist soooo nervig wenn ich genau weiß wie es in PHP geht aber in PERL Stunden dafür brauche! Habe auch direkt wieder das nächste kleine Problem, aber das weiß ich im Moment auch nicht in PHP zu lösen. Gibt es ein andere Möglichkeit die vorghandenen Elemente in einem Array zu zählen? Denn ich habe manchmal einfach nichts in den Elementen stehen und die würde ich gerne nicht mitzählen.

my @array = qw( ... );
my $cnt = 0;
foreach (@array) {
   $cnt++;
}

Und auch in diesem Zusammenhang, wie kan ich prüfen, ob ein Element eines Arrays keinen Wert enthält? Ich dachte mit if(defined $array[123]) , aber das ist irgendwie immer TRUE?!

Ne, kann nicht sein. Das wird andere Ursachen haben. Du könntest uns den Source mal zeigen, dann könnten wir dir sagen, warum (ich hoffe, dass ich mich hier nicht irre). Aber dass ein Array mit der Länge 5 beim Index 123 bei defined true ergibt, ergibt IMO keinen Sinn.

my @array = qw( ... );
my $cnt = 0;
foreach (@array) {
   next unless defined;
   $cnt++;
}

kurze Erklärung:
-> next unless defined;

unless ist genau das Gegenteil von if
defined ohne Parameter verwendet den schon einmal genannte *magische* Variable $_ und somit in diesem Kontext das aktuelle Element in der Liste.

Viele Grüsse

Philipp