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

Teile aus XML Dokument extrahieren (Seite 2)

Tags: Ähnliche Threads

Leser: 23


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
BratHering
 2009-03-29 19:14
#119930 #119930
User since
2005-04-28
155 Artikel
BenutzerIn
[default_avatar]
Herzlichen Dank! :-)
nepos
 2009-03-30 08:29
#119939 #119939
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Wobei man das 1; auch weglassen kann und halt mit if ($@) { ... } den Fehler abfangen kann. Ist halt Geschmackssache.
renee
 2009-03-30 10:24
#119941 #119941
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
2009-03-30T06:29:47 nepos
Wobei man das 1; auch weglassen kann und halt mit if ($@) { ... } den Fehler abfangen kann. Ist halt Geschmackssache.


Es gibt rein theoretisch Race Conditions, die $@ neu setzen können zwischen dem eval und dem if($@)...
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/
nepos
 2009-03-30 11:42
#119947 #119947
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
2009-03-30T08:24:40 renee
2009-03-30T06:29:47 nepos
Wobei man das 1; auch weglassen kann und halt mit if ($@) { ... } den Fehler abfangen kann. Ist halt Geschmackssache.


Es gibt rein theoretisch Race Conditions, die $@ neu setzen können zwischen dem eval und dem if($@)...

Ah, das ist mir neu. Welchen Fall meinst du denn?
Wenn ich $@ direkt hinter dem eval abfrage, kann da doch eigentlich nichts schiefgehen. Ausser vielleicht, man hat Threads im Spiel, aber das will man eigentlich eh nicht.
renee
 2009-03-30 11:52
#119949 #119949
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
2009-03-30T09:42:37 nepos
Wenn ich $@ direkt hinter dem eval abfrage, kann da doch eigentlich nichts schiefgehen. Ausser vielleicht, man hat Threads im Spiel, aber das will man eigentlich eh nicht.


Ich schreibe immer die 1; - allein um auf der sicheren Seite zu sein...
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/
moritz
 2009-03-30 12:21
#119954 #119954
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Das kann vorkommen, wenn eine DESTROY-Methode $@ zuruecksetzt (z.B. weil es auch ein eval benutzt), und dieses Objekt am Ende des evals aus dem scope geht.

Kurzes Beispiel:

Code: (dl )
1
2
12:22 <@moritz> buubot: eval: sub DESTROY { eval '2' }; eval 'my $x = bless {};  die "here"'; $@
12:22 <+buubot> moritz: ""

Last edited: 2009-03-30 12:23:42 +0200 (CEST)
pq
 2009-03-30 12:25
#119955 #119955
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
2009-03-30T08:24:40 renee
Es gibt rein theoretisch Race Conditions, die $@ neu setzen können zwischen dem eval und dem if($@)...

ok, moritz hat mir ein beispiel genannt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ perl -wle'
sub Foo::DESTROY { eval { print "everything ok" }; }
eval {
my $o = bless {}, "Foo";
die;
};
if ($@) {
print "ERROR: $@";
}
else {
print "no error"
}'
everything ok
no error

das war mir neu...
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
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2009-01-22 13:05.