Schrift
[thread]7746[/thread]

Aufräumen: vor einem 'die'



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
bloonix
 2006-02-28 17:51
#63334 #63334
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo zusammen,

gibt es eine Möglichkeit, vor dem 'die' zunächst temporäre
Dateien und Pipes (POSIX::mkfifo) zu entfernen, die von einem
Skript erstellt wurden? Ich dachte da eventuell an ein Modul,
dass vor dem 'die' zunächst schaut, ob es was zum Säubern
gibt.

Falls es schon solch ein Modul gibt, sollte es mit meinem
eigenen "dieHandler" umgehen können. Ansonsten muss ich mir
selbst was einfallen lassen.

Bislang schaut es bei mir beispielsweise wie folgt aus ...

Code: (dl )
open FILE,'<',$file or unlink $pipe and unlink $tmpfile and die $!;


Greez,
opi
----------
Edit:
Das dumme daran ist auch noch, dass natürlich der unlink
fehlerhaft sein kann!\n\n

<!--EDIT|opi|1141142057-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
pktm
 2006-02-28 17:58
#63335 #63335
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Wie wäre es mit Religion.pm? Ich meine dort gelesen zu haben, dass man dort sowas wie Pre-Die-Methoden schreiben kann.
http://www.intergastro-service.de (mein erstes CMS :) )
bloonix
 2006-02-28 18:07
#63336 #63336
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Das schaut schon mal gut aus, bis auf das

Quote
Note that if Religion is in use, you should not modify $SIG{_ _DIE_ _} or $SIG{_ _WARN_ _}, unless you are careful about invoking chaining to the old handler.


Bei mir sind die allerdings schon umgelenkt, um einen sauberen
Logmechanismus zu haben. Ich werde da gleich trotzdem mal
einen Blick in die Sourcen werfen!

Edit:
Bug? _ _ WARN_ _ und _ _DIE_ _ werden nicht angenommen!\n\n

<!--EDIT|opi|1141143320-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
Crian
 2006-02-28 18:08
#63337 #63337
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Du kannst in $SIG{_ _DIE_ _} eine Codereferenz hinterlegen, die bei die ausgeführt wird.

(Ohne die Leerzeichen ... blödes Forum.)\n\n

<!--EDIT|Crian|1141143295-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
[E|B]
 2006-02-28 20:22
#63338 #63338
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Du kannst alternativ dem die auch eine Subroutine mitgeben, ist allerdings nicht so schön wie eine Codereferenz in %SIG.

Code: (dl )
die &mysub;
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
esskar
 2006-02-28 20:41
#63339 #63339
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wenn du $SIG{_ _DIE_ _} schon umleitest, hast du schon was du willst, oder nicht?
Dubu
 2006-03-01 00:37
#63340 #63340
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Mein Vorschlag wäre, für die zu erledigenden Sachen jeweils neue END {...} Blöcke anzulegen. Die werden dann bei Abbruch oder am Ende in umgekehrter Reihenfolge abgearbeitet.
bloonix
 2006-03-01 01:22
#63341 #63341
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=esskar,28.02.2006, 19:41]wenn du $SIG{_ _DIE_ _} schon umleitest, hast du schon was du willst, oder nicht?[/quote]
Ja schon, aber durch ein "globales" Modul, dass alle Admins für
alle Skripts nutzen. Da kann ich leider nicht einfach mal eben im
dieHandler rumpfuschen, dass sähen die garnicht gerne :/

Eventuell werde ich ne eigene Sub im Skript einpflegen. An die
Sub wird dann die 'die' Meldung und ein Hash (evtl. Array) mit
den temporären Dateien bzw. Pipes übergeben.

Irgendwie sowas, was EB vorgeschlagen hat...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
open FILE,'<',$file or mySub($!,%files);

sub mySub {
my $msg = shift;
my %hash = shift;
foreach my $key (keys %hash) {
if (unlink $hash{$key}) {
print LOG "$hash{$key} was successfully unlinked\n";
} else {
$msg .= "Unable to unlink $hash{$key}\n";
}
}
die $msg;
}


Oder hättet Ihr eine bessere Idee?\n\n

<!--EDIT|opi|1141169150-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
bloonix
 2006-03-01 01:25
#63342 #63342
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=Dubu,28.02.2006, 23:37]Mein Vorschlag wäre, für die zu erledigenden Sachen jeweils neue END {...} Blöcke anzulegen. Die werden dann bei Abbruch oder am Ende in umgekehrter Reihenfolge abgearbeitet.[/quote]
Wie meinst du das genau? Bin neugierig...
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
murphy
 2006-03-01 02:58
#63343 #63343
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
END Blöcke könnten eine gute Lösung sein. Aber wenn Du aus irgendwelchen Gründen den $SIG{_ _DIE_ _} Handler überschreiben musst, kannst Du ja den alten Handler am Ende des neuen aufrufen.\n\n

<!--EDIT|murphy|1141174755-->
When C++ is your hammer, every problem looks like your thumb.
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2006-02-28 17:51.