Schrift
[thread]8980[/thread]

or die ...



<< >> 5 Einträge, 1 Seite
zipster
 2007-05-08 14:42
#76543 #76543
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Hi,

benutze in einem Programm folgenden String.
Code: (dl )
File::Copy::copy( $srcpath, $dstpath ) || die print FILE strftime "%a, %d %b %Y %H:%M:%S    Es ist ein Fehler beim...", localtime;        


Ich würde jetzt aber gerne ausser dem Print noch folgende 2 subs ausführen.
Code: (dl )
1
2
&error_email($Config{smtp},$Config{from}, $Config{to}, $Config{subject}, "FEHLER:...");
&start_vmmaschine;


Wie kann ich das mit dem or die machen?


Danke

Gruß
Seri aka Zipster\n\n

<!--EDIT|zipster|1178621229-->
renee
 2007-05-08 14:52
#76544 #76544
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du könntest mit einem Signal-Handler arbeiten, oder aber so
Code: (dl )
1
2
3
4
5
C:\Dokumente und Einstellungen\Renee>perl  "open my $fh, './hallowelt.txt' or
send_mail(), do_something(), die 'died';

sub send_mail{ print qq°send_mail\n°}
sub do_something{ print qq~do_something\n~}
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/
PerlProfi
 2007-05-08 19:38
#76545 #76545
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Du kannst auch einen do{} Block hinter dein || klemmen:
Code: (dl )
1
2
3
4
5
6
File::Copy::copy( $srcpath, $dstpath ) || do {
print FILE strftime "%a, %d %b %Y %H:%M:%S Es ist ein Fehler beim...", localtime;
&error_email($Config{smtp},$Config{from}, $Config{to}, $Config{subject}, "FEHLER:...");
&start_vmmaschine;
die();
};


MfG
Dubu
 2007-05-29 00:06
#76546 #76546
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Wenn die Klausel hinter dem "or" zu kompliziert wird, ist ein einfaches "if" doch schöner, oder?
Code: (dl )
1
2
3
4
5
6
if (not File::Copy::copy( $srcpath, $dstpath )) {
   error_email($Config{smtp},$Config{from}, $Config{to} $Config{subject}, "FEHLER:...");
   start_vmmaschine();
   print FILE strftime("%a, %d %b %Y %H:%M:%S    Es ist ein Fehler beim...", localtime);        
   die;
}


Was die Fehlerausgabe mit dem strftime angeht: Ich finde es praktischer, für so etwas eine eigene sub zu haben, die sich um Timestamps etc. kümmert. Mit caller() kommt man da auch an Informationen, wo der Fehler aufgetreten ist.
renee
 2007-05-29 00:28
#76547 #76547
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das finde ich auch schöner. So ist auf den ersten Blick schon ersichtlich, was da abgeht...
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/
<< >> 5 Einträge, 1 Seite



View all threads created 2007-05-08 14:42.