Schrift
[thread]11069[/thread]

Hashref bei anonymer Funktion (Seite 3)



<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten
Froschpopo
 2007-12-28 14:34
#104209 #104209
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
die JOINS sind ja u.A. ein Grund, warum ich alles in einer Sub brauche, denn die ganze Geschichte ist sehr sehr flexibel.
Es kann zu Joins kommen, oder aber auch nicht.
pq
 2007-12-28 22:43
#104227 #104227
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
Froschpopo+2007-12-28 09:44:47--
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()

also bei mir werden da zwei verschiedene zahlen ausgegeben. vielleicht ein
bug in deiner perl-version?
This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Froschpopo
 2007-12-28 23:31
#104229 #104229
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
nee, ich hab mittlerweile herausgefunden, dass es an den ->() lag.
Es hat ein paar Minuten gedauert bis ich verstand, dass ->() die Funktionsreferenz an Ort und Stelle, also auch schon direkt wärend der Deklarierung, ausführt.
Deshalb wurde rand() auch nur einmal ausgeführt.
Gast Gast
 2007-12-29 12:38
#104238 #104238
Code: (dl )
1
2
3
4
5
6
7
my $stmt = 'something';

{
my $stmt = 'other';
}

# $stmt eq 'something'

Wenn das Codestück in dem Block noch was zurückgeben soll, dann kommt eben ein do vor den Block und ein ; hintendran, die Rückgabe kannst du dann wie von einer Funktion holen.
Code: (dl )
1
2
3
4
5
6
7
8
9
my $stmt = 'something';

my $res = do {
my $stmt = 'other';
return $stmt;
};

# $res eq 'other'
# $stmt eq 'something'


MfG Horst
renee
 2007-12-29 12:53
#104240 #104240
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das "return" noch weg und dann passt es...

Sonst gibt's einen Fehler. do liefert automatisch den evaluierten Wert des letzten Statements zurück...

Code (perl): (dl )
1
2
3
my $res = do{ print "..."}; # $res => 1, da das print erfolgreich war und "1" zurückliefert
$res = do{ 4 + 5 }; # $res  => 9
# usw...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2007-12-29 14:43
#104246 #104246
Jo entschuldigung, war mir jetz nich ganz sicher... nächstes mal werd ichs wohl erstmal testen.

MfG Horst
<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten



View all threads created 2007-12-28 05:40.