|< 1 2 3 >| | 26 Einträge, 3 Seiten |
1 2 3 4 5 6
my $hashref = sub { my %list = (1 => 'test'); return \%list; }; print $hashref->{1},"\n";
1 2 3 4 5 6 7 8 9 10 11
sub ablauf { my $users = sub { #%liste erarbeiten return \%liste; }; my $fotos = sub { #%liste erarbeiten return \%liste; }; }
1 2 3 4 5 6
my $hashref = sub { my %list = (1 => 'test'); return \%list; }->(); print $hashref->{1},"\n";
1 2 3
my $ref = do { my %list = ( 1 => 'test' ); \%list; }; print $ref, $/; print $ref->{1}, $/;
1 2 3 4 5
my $hashref = sub { return shift; }; print $hashref->(5),"\n"; print $hashref->(125),"\n";
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()
1 2 3 4 5
my $hashref = sub { return $dbh->selectrow_array("SELECT * FROM users"); }; print $hashref->(),"\n"; print $hashref->(),"\n";
Froschpopo+2007-12-28 08:15:48--Wie kommst du darauf, dass hier ein Funktion aufgerufen wird? Du weist den Variabeln eine sub-Referenz zu, mehr nicht.Die Funktion wird in einer anderen Funktion aufgerufen, in etwa so:
Code (perl): (dl )1 2 3 4 5 6 7 8 9 10 11sub ablauf { my $users = sub { #%liste erarbeiten return \%liste; }; my $fotos = sub { #%liste erarbeiten return \%liste; }; }
1
2
3
4
5
6
7
8
9
10
11
12
13
$ perl
my $ref = sub { return int( rand( 1000 ) ); };
for ( 1 .. 5 ) {
print $ref->(), $/;
}
211
346
330
996
789
Froschpopo+2007-12-28 09:44:47--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.Code (perl): (dl )1 2 3 4 5my $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 5my $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?
Froschpopo+2007-12-28 09:44:47--Natürlich wird diese bei dem Aufruf neu ausgeführt. Ich habe wirklich den Eindruck, dass du was ganz anderes willstKonkret:
Code (perl): (dl )1 2 3 4 5my $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.
Froschpopo+2007-12-28 09:44:47--Wo ist eigentlich der Unterschied zu:
Code (perl): (dl )1 2 3 4 5my $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?
QuoteNur einmal zum Zeitpunkt der Deklarierung?
QuoteOder jedesmal, wenn ich irgendwo $hashref auftaucht?
|< 1 2 3 >| | 26 Einträge, 3 Seiten |