Schrift
[thread]6069[/thread]

Dateien speichern während Zugriff möglich?



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
Gast Gast
 2004-02-11 13:16
#80010 #80010
Hallo,

ich arbeite erst seit kurzem mit Perl und bin auf folgendes Problem gestoßen:

In meinem Perlprogramm, möchte ich eine Art Log-File erstellen.
Jetzt hab ich das Problem, dass rein gar nichts in dem File steht (obwohl ich auf die Datei geschrieben hatte), wenn das Programm abstürzt oder mittendrin abgebrochen wurde.
Kann ich irgendwo einen Programmabsturz abfangen und dort die Datei sachgemäß schliessen, oder gibt es die Möglichkeit, eine Datei im Programm zu speichern.

Noch eine andere Frage: seh ich es richtig, dass alle Variablen, die ich im Hauptprogramm deklariere, global sind? Kann man das Hauptprogramm irgendwie abgrenzen, bei mir geht das Perlprogramm mit dem Hauptprogramm los.

Vielen Dank im Voraus für die Antworten!
ptk
 2004-02-11 13:27
#80011 #80011
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du kannst mit $|=1 erzwingen, dass jede Zeile sofort herausgeschrieben wird. Ansonsten wird je nach stdio-Implementation mehr oder weniger gepuffert.
jubi14
 2004-02-11 15:30
#80012 #80012
User since
2004-02-11
9 Artikel
BenutzerIn
[default_avatar]
Hallo ptk,

kannst du das mit dem $|=1 näher erläutern?
Wo muss das hin?

Vielen Dank für deine Antwort!
esskar
 2004-02-11 15:47
#80013 #80013
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=jubi14,11.02.2004, 14:30]Wo muss das hin?[/quote]
am bsten direkt unter #!/usr/bin/perl
jubi14
 2004-02-11 16:02
#80014 #80014
User since
2004-02-11
9 Artikel
BenutzerIn
[default_avatar]
Hallo,

das funktioniert nicht. Des Zeug wird nicht gleich in die Datei geschrieben. Gibt's noch ne andere Möglichkeit?
ptk
 2004-02-11 16:31
#80015 #80015
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Welches OS?
renee
 2004-02-11 16:34
#80016 #80016
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
fragst Du ab, ob Du in die Datei schreiben darfst?? Stichwort:
Code: (dl )
open DATEI,">$file" or print $!;
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/
Ishka
 2004-02-11 16:52
#80017 #80017
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
mit { } kannst du Blöcke machen. Variablen, die mit my deklariert wurden sind nur innerhalb dieser Blöcke gültig, also zB:
Code (perl): (dl )
1
2
3
4
5
6
my $blah=5;
{
my $blah=7;
print $blah;#7
}
print $blah;#5


btw: wenn du
use strict;
use warings;
verwendest, schreit der Interpreter bei vielen potentiellen Fehlern, daher solltest du das verwenden (allerdings mußt du dann alle Variablen mit my deklarieren)
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
jubi14
 2004-02-11 16:57
#80018 #80018
User since
2004-02-11
9 Artikel
BenutzerIn
[default_avatar]
Hallo!

Also, mein Code sieht in etwa so aus:
$|=1;
open (FILE_SENDMAIL, ">SentMail.txt") or die "Fehler beim oeffnen der Datei SentMail.txt";
print FILE_SENDMAIL localtime(time)."\t".$mail."\t".$kst."\n";

Mein Problem is, dass ich die Infos unbedingt brauche, d.h., dass sie auf jeden Fall in der Datei landen sollten, auch wenn das Programm wegen eines Fehlers abstürzt.
ptk
 2004-02-11 17:06
#80019 #80019
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ach so. Du musst Perl noch sagen, welches Filehandle mit $| gemeint ist. Also so:
Code: (dl )
1
2
3
open(FH, ...);
select FH; $| = 1; select STDOUT;
...

Siehe auch SelectSaver und IO::Handle::autoflush.
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-02-11 13:16.