Schrift
[thread]7727[/thread]

return-Funktion neu schreiben / überladen



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Gast Gast
 2006-02-22 10:28
#63173 #63173
Hallo,

ich möchte die return-Anweisung etwas erweitern.
z.B. soll sie nicht nur einen wert zurückliefern sondern auch noch etwas in eine Logdatei schreiben. Kann mir da jemand helfen?
Das soll dann so aussehen:

sub neue_return_funktion{
schriebe_logteitei('lognachricht');
# hier irgendwie aus der aufrufenden funktion heraus springen.
# wen ich hier nur return schreibe, springt man aus der funktion
# 'neue_return_funktion' heraus, aber nicht aus der aufrufenden
# Funktion.
}


danke für Hilfe
MR
esskar
 2006-02-22 23:48
#63174 #63174
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
das bekommst du nicht hin. man könnte sich zwar folgendes vorstellen:

Code: (dl )
1
2
3
4
sub return {
print "Hallo\n";
CORE::return @_;
}


aber in diesem Fall würde das CORE::return aus der Funktion return springen und nicht aus einer Funktion, die return aufruft.
betterworld
 2006-02-23 00:28
#63175 #63175
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Brauchst Du das zum Debuggen? Dann lies mal "perldoc perldebug"
ptk
 2006-02-23 01:29
#63176 #63176
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Guck dir mal Module wie Hook::WrapSub an. Dort kannst du zusätzlichen Code vor und nach jedem Subroutinen-Aufruf ausführen lassen.
morph
 2006-02-23 05:04
#63177 #63177
User since
2007-12-06
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

würde das nicht auch ausreichen?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
sub logit {
# öffne, schreibe und schließe Logdatei
}

sub other_function {
# code
&logit($return_value);
return($return_value);
}
$var = &other_function($foo,$bar);


-uw
renee
 2006-02-23 06:41
#63178 #63178
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
So was kann man natuerlich auch benutzen, besser sind da aber Module wie CPAN:Log::Log4perl
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/
morph
 2006-02-23 06:52
#63179 #63179
User since
2007-12-06
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=renee,23.02.2006, 05:41] CPAN:Log::Log4perl[/quote]
Das sieht in der Tat interessant aus.

-uw\n\n

<!--EDIT|TbHoCne|1140670359-->
renee
 2006-02-23 07:33
#63180 #63180
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dazu gibt's auch nen Artikel: http://www.linux-magazin.de/Artikel/ausgabe/2003/01/perl/perl.html
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/
morph
 2006-02-23 07:41
#63181 #63181
User since
2007-12-06
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Super Sache, vielen dank für den Link. Das Modul findet sich sogar im Debian Sarge Repository, das ist in der Tat angenehm.:)
Code: (dl )
package_name: liblog-log4perl-perl


-uw
smallish
 2006-02-23 12:26
#63182 #63182
User since
2005-10-13
28 Artikel
BenutzerIn
[default_avatar]
ich habe noch eine ganz "böse" (mit einem sehr bösen goto &methode) und caller verwirrende methode gefunden wie man es machen könnte:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use strict;
use warnings;

my $log = "ich bin der log!";

print "vor funktion\n";
funktion($log);
print "nach funktion\n";

sub return_me {
my ($log) = @_;
print "$log\n";
return;
}

sub funktion {
print "in funktion!\n";
goto &return_me;
print "ich werde nicht ausgedruckt!";
}


NACHTRAG: funktioniert nicht mit übergabe von parametern, also
eigentlich wertlos... Sorry!\n\n

<!--EDIT|smallish|1140691068-->
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2006-02-22 10:28.