Froschpopo+2007-12-28 09:44:47--
my $hashref = sub {
return shift;
};
print $hashref->(5),"\n";
print $hashref->(125),"\n";
Wo ist eigentlich der Unterschied zu:
my $hashref = sub {
return int(rand(1000));
};
print $hashref->(),"\n";
print $hashref->(),"\n";
Wie oft wird $hashref denn nun ausgeführt? Nur einmal zum Zeitpunkt der Deklarierung? Oder jedesmal, wenn ich irgendwo $hashref auftaucht?
Du weist dem Skalar eine Funktion zu ausgeführt wird sie erst mit dem Aufruf ->(). Im zweitem Beispiel mit einem festen Rückgabewert. Im ersten wird der Parameter den du übergibst zurückgegeben.
Froschpopo+2007-12-28 09:44:47--Konkret:
my $hashref = sub {
return $dbh->selectrow_array("SELECT * FROM users");
};
print $hashref->(),"\n";
print $hashref->(),"\n";
Ist diese Funktion jetzt statisch oder nicht? Das wäre ja blödsinn, wenn bei jedem print die ganze Datenbankabfrage neu ausgeführt wird.
Natürlich wird diese bei dem Aufruf neu ausgeführt. Ich habe wirklich den Eindruck, dass du was ganz anderes willst