Thread Hashref bei anonymer Funktion (25 answers)
Opened by Froschpopo at 2007-12-28 05:40

Struppi
 2007-12-28 10:53
#104175 #104175
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Froschpopo+2007-12-28 09:44:47--
Code (perl): (dl )
1
2
3
4
5
my $hashref = sub {
    return shift;
};
print $hashref->(5),"\n";
print $hashref->(125),"\n";

Wo ist eigentlich der Unterschied zu:
Code (perl): (dl )
1
2
3
4
5
my $hashref = sub {
    return int(rand(1000));
};
print $hashref->(),"\n";
print $hashref->(),"\n";  #ergibt dasselbe ergebnis wie beim ersten print()


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:
Code (perl): (dl )
1
2
3
4
5
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

View full thread Hashref bei anonymer Funktion