Thread open( WF, ">datei" ) in Funktion: Letzer Write funktioniert nicht (7 answers)
Opened by Jiep1963 at 2013-07-27 10:34

GwenDragon
 2013-07-27 10:43
#169181 #169181
User since
2005-01-17
14757 Artikel
Admin1
[Homepage]
user image
Ein paar Hinweise:

1. verwende
Code: (dl )
1
2
use strict;
use warnings;

am Programmanfang

2. Deklariere deine Variablen, die du benutzt.

3. verwende lexikalische Dateihandles
Ersetze RF bei der ersten Definition my $RF, alle folgende RF druch $RF

4. Benutze bei open die Schreibweise mit 3 Parametern
open( my $WF2, ">", "$qpath/TRANSLATE/$trans_file" )

5. Sperre beim Schreiben deine Dateien
Code: (dl )
1
2
# Modul laden
use Fcntl qw(:DEFAULT :flock);

später im Code:
Code: (dl )
1
2
open( my $WF2, ">", "$qpath/TRANSLATE/$trans_file" )
flock ($WF2, LOCK_EX) or die "Lock konnte nicht druchgefuehrt werden"; # sperre Datei


6. Benutze statt $_ eher lokal lexikalische Variable
Statt
Code: (dl )
1
2
3
4
while( <RF> )
{
chomp( $_ );
$Zeile = $_;

beispielsweise dies:
Code: (dl )
1
2
3
4
my $Zeile;
while( $Zeile = <$RF> )
{
chomp $Zeile;


Wenn du $_ irgendwo verwenden willst, solltest du schnellstmöglich den Wert in einer eigenen Variablen speichern, weil es sonst irgendwann Nebeneffekte geben kann
Last edited: 2013-07-27 10:49:05 +0200 (CEST)

View full thread open( WF, ">datei" ) in Funktion: Letzer Write funktioniert nicht