@Daten[$i] oder $Daten[$i]
Markus
- perl
0 xNeTworKx0 Markus0 xNeTworKx0 Markus0 Klaus Mock0 Markus0 Klaus Mock0 Cheatah
0 xNeTworKx
Hallo,
zunächst einmal möchte ich mich für die Hilfe bei meinem letzten Posting bedanken. (Ist schon im Archiv, deshalb kann ich's da nicht mehr machen)
So nun zu meiner Frage:
Ich habe beim Aufruf eines Listenelementes statt $Daten[$i] versehentlich @Daten[$i] geschrieben. Diesen Fehler habe ich zunächst garnicht bemerkt, da das Script einwandfrei funktionierte.
Kann man nun beide Schreibweisen verwenden oder gibt's da einen Unterschied?
Gruß
Markus
Hi,
richtig : $Daten[$i]
falsch : @Daten[$i]
Hi,
richtig : $Daten[$i]
weiß ich
falsch : @Daten[$i]
und warum funktioniert's dann?
Hi,
richtig : $Daten[$i]
weiß ich
falsch : @Daten[$i]
und warum funktioniert's dann?
Ich glaub nicht, daß das funktioniert, daß musst du irgendwie verwechseln.
Man kann die Werte aus dem Array Daten nur eben so herausziehen $Daten[$i].
Ich glaub nicht, daß das funktioniert, daß musst du irgendwie verwechseln.
Ich hab es doch gerade eben noch ausprobiert. Es geht.
my @Neueliste = split(/|/,$Hauptliste[$i]);
bewirkt das selbe wie
my @Neueliste = split(/|/,@Hauptliste[$i]);
Hallo,
richtig : $Daten[$i]
weiß ich
falsch : @Daten[$i]
und warum funktioniert's dann?
weil es nicht falsch ist.
Ich glaub nicht, daß das funktioniert, daß musst du irgendwie verwechseln.
Man kann die Werte aus dem Array Daten nur eben so herausziehen $Daten[$i].
Ich würde empfehlen, nicht nur in solchen Fällen, die beigefügte Dokumentation zu konsultieren.
Mittels
perldoc perlfaq4 (What is the difference between $array[1] and @array[1]?)
kann man sich beispielsweise in _diesem_ Falle Klarheit verschaffen.
Dort wird beschrieben, warum es meist keinen unterschied macht, ob man einen Skalar ($array[1]) oder eine Liste mit einem Element (@array[1]) verwendet.
Und gleich auch, daß es manchmal doch einen Unterschied macht.
Grüße
Klaus
Ich würde empfehlen, nicht nur in solchen Fällen, die beigefügte Dokumentation zu konsultieren.
Mittels
perldoc perlfaq4 (What is the difference between $array[1] and @array[1]?)
kann man sich beispielsweise in _diesem_ Falle Klarheit verschaffen.
Ich stehe mit perldoc irgendwie auf dem Kriegsfuß, da hab ich noch nie gefunden, was ich gesucht habe.
Dort wird beschrieben, warum es meist keinen unterschied macht, ob man einen Skalar ($array[1]) oder eine Liste mit einem Element (@array[1]) verwendet.
Und gleich auch, daß es manchmal doch einen Unterschied macht.
Danke.
Gruß
Markus
Hallo,
Ich stehe mit perldoc irgendwie auf dem Kriegsfuß, da hab ich noch nie gefunden, was ich gesucht habe.
Hmm, eigentlich stehen da eine Menge wirklich gute Informationen drin. Ich habe bisher selten so wirklich umfangreiche, und vor allem hilfreiche Dokumentationen eines Produkts gesehen, wie es bei Perl der Fall ist.
Solltest Du Probleme mit der Sprache, in der es geschrieben ist, haben, so kann ich Dir nur die anschaffung von 'Programmieren in Perl' aus dem O'Reilly-Verlag empfehlen.
Grüße
Klaus
Hi,
Ich stehe mit perldoc irgendwie auf dem Kriegsfuß, da hab ich noch nie gefunden, was ich gesucht habe.
üben, üben, üben! Es lohnt sich. Das meine ich ernst. Gerade in diesem Fall hättest Du, wenn Du in perldoc geübt wärst, schnell die richtige Stelle gefunden (nämlich die von Klaus genannte). Mehr als dort steht, ist nicht wissenswert.
Darum verweise ich leidenschaftlich gern auf perldoc, auch wenn die eigentliche Lösung schneller getippt wäre :-)
Chea "Learn how to learn!" tah
Hallo,
da hab ich ja wieder was dazugelernt, in meinem Perl Buch steht es nämlich nur so drin $Daten[$i], deswegen dachte ich, daß das andere falsch sei :-)
Hallo,
da hab ich ja wieder was dazugelernt, in meinem Perl Buch steht es nämlich nur so drin $Daten[$i], deswegen dachte ich, daß das andere falsch sei :-)
Es ist nicht falsch, aber vielleicht nicht unbedingt, was er will.
@Daten[$i] ist nämlich nicht gleich $Daten[$i].
$Daten[$i] = Skalar
@Daten[$i] = Array (1)
(1) Der anonyme Array, der im zweiten Element von @Daten steckt, wird mit @ dereferenziert.
@Daten[$i] ist also gleich @{$Daten[$i]}.
Das ganze kann sich in Perl 6 aber gewaltig ändern, da ist @Daten[$i] dann der Skalar (so weit ich richtig informiert bin).
Tschö Matti
Hallo,
da hab ich ja wieder was dazugelernt, in meinem Perl Buch steht es nämlich nur so drin $Daten[$i], deswegen dachte ich, daß das andere falsch sei :-)
Nur wiel das eine richtig ist, muß das andere nicht falsch sein. (TMTOWDTI)
Es ist nicht falsch, aber vielleicht nicht unbedingt, was er will.
@Daten[$i] ist nämlich nicht gleich $Daten[$i].
$Daten[$i] = Skalar
@Daten[$i] = Array (1)
Um es nochmals zu verdeutlichen:
Das macht einen gewaltigen Unterschied, vor allem bei einer Zuweisung.
Beispiel:
<code>
#!/usr/bin/perl
my @daten;
@daten[0] = gmtime;
$daten[1] = gmtime;
print join("\n",@daten);
</code>
ergibt die Ausgabe
<result>
28
Sun Jan 27 12:35:28 2002
</result>
warum?
gmtime liefert unterschiedliche Daten, je nachdem,. ob es im Listenkontext oder Skalarkontext aufgerufen wird.
Im ersten Fall, liefert es die Einzelwerte der aktuellen Urzeit, wobei der erste die Sekunden sind. Im zweiten Fall liefert es einen vollständigen Datumsstring.
@daten[0] zwingt gmtime aber im Listenkontext zu arbeiten, nimmt aber nur einen Wert auf, hier also die Anzahl der Sekunden.
Grüße
Klaus
Hoi,
@Daten[$i] ist nämlich nicht gleich $Daten[$i].
$Daten[$i] = Skalar
@Daten[$i] = Array (1)
(1) Der anonyme Array, der im zweiten Element von @Daten steckt,
wird mit @ dereferenziert.
@Daten[$i] ist also gleich @{$Daten[$i]}.
Das ist so nicht richtig.
@Daten[$i] ist ein Array-Splice, es wird ein Array erstellt, in dem
genau ein (skalarer?) Wert steckt. Das ganze kann man auch noch ins
Exzess treiben:
my @part_of_a_list = @list[10..15];
Hier ist '@part_of_a_list' eine Teilmenge von @list: es enthaelt die
Elemente 10 bis 15. Es ist also (fast) dasselbe wie
@part_of_a_list = splice @list, 10, 15;
mit dem ganz entscheidenden Unterschied, dass splice() Elemente
aus der Liste '@list' enfernt, der []-Operator allerdings nicht.
Gruesse,
CK