Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]13092[/thread]

Sauber mit return Werten arbeiten.

Leser: 1


<< >> 3 Einträge, 1 Seite
Brenner
 2009-02-02 12:56
#118573 #118573
User since
2009-01-13
87 Artikel
BenutzerIn
[default_avatar]
Hab grad festgestellt das ich in Modulen bzw. Subroutinen nicht voran komme wenn ich "die" benutze, da dann der rest der routine nicht mehr ausgeführt wird.


Wie kann ich trotzdem eine vernünftige Fehlerüberprüfung machen?

Ich habe ja nur einmal die am Schluss die Möglichkeit den Returnwert mit 0, 1 oder -1 usw. zurück zu geben. Wenn alle programmteile der subroutine sauber durchgelaufen sind soll es einen positiven Return geben, falls eine fehlschlägt soll der Rest trotzdem abgearbeitet werden und eine negativer Returnwert ausgeben.


Oder gibts da andere Praktiken?
Gast Gast
 2009-02-02 13:06
#118575 #118575
Das "die" kannst du durch ein "warn" oder ein "croak" (aus CGI::Carp) ersetzen und das mit dem Rückgabewert erledigst du halt ueber eine Variable, so in der Art wuerde ich das angehen (ungetestet):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package Test;
sub test {
my $return_value = 1;
open(FH, '<', 'test.txt') or error_msg(\$return_value) ; #ja, man soll variablen als FH nehmen
close FH;
return $return_value;
}

sub error_msg {
my $r_value = shift;
$$r_value = 0;
warn $!;
}
1;
pq
 2009-02-02 13:30
#118576 #118576
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Gast+2009-02-02 12:06:56--
Code: (dl )
1
2
  open(FH, '<', 'test.txt') or error_msg(\$return_value) ; #ja, man soll variablen als FH nehmen
close FH;

und warum tust du es hier nicht?
Code (perl): (dl )
1
2
open my $fh, '<', 'test.txt' or ...;
close $fh;

ist doch jetzt so kein grosser aufwand?
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
<< >> 3 Einträge, 1 Seite



View all threads created 2009-02-02 12:56.