Frage zu undef
Steve
- perl
Hallo,
ich bin gerade über die Function undef in einem Codeschnippsel gestolpert:
$db->Sql("SELECT * FROM user");
while ($db->FetchRow())
{
undef %daten;
%daten = $db->DataHash();
for ($iTemp = 0; $iTemp < $spalten; $iTemp++)
{
print "$daten{$felderNamen[$iTemp]} ";
}
}
Was soll denn der Befehl undef %daten ? Ich habe gelesen, dieser löscht Variablen/Hashes. Der nachfolgende Befehl %daten = $db->DataHash(); überschreibt doch eh die Variable.
Ist der Befehl undef %daten; hier sinnvoll?
thx
Steve
Hallo Steve,
Ist der Befehl undef %daten; hier sinnvoll?
Nein, er ist voellig ueberfluessig. Vermutlich meint der Autor des Scripts etwas wie das
hier:
while($db->FetchRow()) {
my %daten = $db->DataHash();
for(my $iTemp = 0; $iTemp < $spalten; ++$iTemp) {
print "$daten{$felderNamen[$iTemp]} ";
}
}
Grüße,
CK
hi ck und die anderen,
danke für die info. dann werde ich undef %daten; weglassen.
mein code soll ja kurz und knackig sein ;-)
bye
steve
Ich bin mir nicht 100%ig sicher, aber ich denke, dies ist eine Vorsichtsmaßnahme, um sicherzustellen, dass im Hash keine weiteren Daten sind.
Wenn der alte Hash länger ist als er durch die neuen Daten wird, dann könnten hinterher evtl. noch irgendwelche "Speicher-Leichen" drin sein.
Wie gesagt, keine Garantie auf diese Aussage, aber für mich die einzig logische Erklärung.
Mfg, MF
Hallo MankoFranko,
Wenn der alte Hash länger ist als er durch die neuen Daten wird, dann könnten hinterher
evtl. noch irgendwelche "Speicher-Leichen" drin sein.
Nein.
Grüße,
CK
Ok, akzeptiert.
Aber ich denke, dass dies zumindest der Grund war, warum der Schreiber dieses Programms das gemacht hat.
Bei älteren Programmiersprachen waren solche Schritte nötig, weil dort genau das passiert wäre, was ich beschrieben hatte.
Und der Mensch ist halt ein Gewohnheitstier.
Und solange es keinen Schaden anrichtet, warum nicht auf Nummer sicher gehen?
Demnach können solche Befehle, die nicht wirklich immer Sinn machen, öfter in irgendwelchen fremden Programmen vorkommen.
Mfg, MF