Schrift
[thread]7039[/thread]

or die: fehlerbehandlung ohne abbruch



<< >> 8 Einträge, 1 Seite
Rambo
 2005-06-07 12:19
#55399 #55399
User since
2003-08-14
803 Artikel
BenutzerIn

user image
hallo zusammen,

wenn man folgendes schreibt
Code: (dl )
unlink <*.*> or die "can't delete files\n";

es aber nichts zu löschen gibt bricht das script ja ab weil
das "or die" drin ist.
wie kann ich eine ausgabe erzeugen ohne das es abbricht?

eine zweite frage ist wie kann ich herausbekommen was
alles gelöscht wird? so in etwa wie
unlink file1; unlink file2 etc.
geht das?

merci

rambo
renee
 2005-06-07 12:45
#55400 #55400
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
for(<*.*>){
if(unlink $_){
print $_," deletedt\n";
}
else{
print "can't delete ",$_,"\n";
}
}


Einzeiler ohne Abbruch:
Code: (dl )
unlink <*.*> or print "can't delete files\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/
Rambo
 2005-06-07 13:43
#55401 #55401
User since
2003-08-14
803 Artikel
BenutzerIn

user image
klasse! vielen dank!
Taulmarill
 2005-06-07 13:55
#55402 #55402
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
den einzeiler würd ich eher so schreiben:
Code: (dl )
unlink <*.*> or warn "can't delete files\n";

warn gibt die meldung auf STDERR aus, und da gehört sie hin
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
supersucker
 2005-06-07 17:01
#55403 #55403
User since
2005-03-17
118 Artikel
BenutzerIn
[default_avatar]
oder wie wäre es mit:

Code: (dl )
1
2
3
4
5
6
for (<*.*>){
eval {
unlink $_;
};
print $@ if($@);
}


kann man sich in perl eigentlich auch eigene exceptions schreiben wie z.B. in java? fände ich recht nützlich wenn man beispielsweise mit eval einen block umschließt der verschiedene exceptions werfen kann...
Strat
 2005-06-07 18:48
#55404 #55404
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=supersucker,07.06.2005, 15:01]kann man sich in perl eigentlich auch eigene exceptions schreiben wie z.B. in java? fände ich recht nützlich wenn man beispielsweise mit eval einen block umschließt der verschiedene exceptions werfen kann...[/quote]
meinst du sowas?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
eval {
if ($x == 1) {
die "1\n";
}
else {
die "2\n";
}
};
if ($@) {
if ($@ eq "1\n") {
print "Exception1\n";
}
elsif ($@ eq "2\n") {
print "Exception2\n";
}
else {
....
}
}
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
esskar
 2005-06-07 23:23
#55405 #55405
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
use PException;
try {
throw( AnException->new() ) if $something;
throw( AnOtherException->new( [] ) )
unless $anotherthing;
}
catch AnException( sub { } ) ,
onfly AnOtherException( sub { } );
supersucker
 2005-06-07 23:49
#55406 #55406
User since
2005-03-17
118 Artikel
BenutzerIn
[default_avatar]
die letzten beiden antworten waren genau das was ich wissen wollte, nämlich zum einen wie ich das mit "perl-hausmitteln" machen kann, also über eval (wusste nicht das auch ein "die" "$@" setzt), und zum anderen mit welchen modul ich das "java-like" realisieren kann.

thx
<< >> 8 Einträge, 1 Seite



View all threads created 2005-06-07 12:19.