Schrift
[thread]6743[/thread]

flock with pidHdl: FLOCK: Bareword "pidHdl" not allowed whi



<< >> 6 Einträge, 1 Seite
Rufio
 2005-02-25 21:16
#52153 #52153
User since
2003-12-22
7 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich bringe dieses Script nicht zum Laufen. Es sollte überprüfen mit Hilfe einer *.pid Datei ob er bereits gestartet ist.
ohne use strict läuft es problemlos.
vielen Dank für Hilfe.

Rafael

Fehlermeldung:
Bareword "pidHdl" not allowed while "strict subs" in use at C:/xampp/cgi-bin/raumverwaltung_3.pl line 18. Bareword "pidHdl" not allowed while "strict subs" in use at C:/xampp/cgi-bin/raumverwaltung_3.pl line 22. Bareword "pidHdl" not allowed while "strict subs" in use at C:/xampp/cgi-bin/raumverwaltung_3.pl line 24.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/perl

use warnings;
use strict;
use Fcntl;
my $pidFile    = "C:/xampp/cgi-bin/raumverw_2.pid";

&CheckAllReadyRunning;

sub CheckAllReadyRunning {
#LOCK_SH = 1;
my $LOCK_EX = 2;
my $LOCK_NB = 4;
my $LOCK_UN = 8;

if( ! open( pidHdl, ">>$pidFile"))
{
   flock( pidHdl, $LOCK_UN);
   close( pidHdl);
   die;
}
if( ! flock( pidHdl, $LOCK_NB + $LOCK_EX))
{
   flock( pidHdl, $LOCK_UN);
   close( pidHdl);
   die;
}
truncate( pidHdl, 0);
select( pidHdl); $| = 1; select( STDOUT);
print( pidHdl "$$");
};


edit pq: code tags\n\n

<!--EDIT|pq|1109368535-->
GwenDragon
 2005-02-25 21:35
#52154 #52154
User since
2005-01-17
14754 Artikel
Admin1
[Homepage]
user image
Einfach das Filehandle GROSS schreiben ;)
Rufio
 2005-02-26 01:27
#52155 #52155
User since
2003-12-22
7 Artikel
BenutzerIn
[default_avatar]
ich bin nicht sicher ob das ernst gemeint war, trotzdem habe ich es ausprobiert.

Fehlermeldung:
Bareword "PIDHDL" not allowed while "strict subs" in use at C:/xampp/cgi-bin/raumverwaltung_3.pl line 18. Bareword "PIDHDL" not allowed while "strict subs" in use at C:/xampp/cgi-bin/raumverwaltung_3.pl line 22. Bareword "PIDHDL" not allowed while "strict subs" in use at C:/xampp/cgi-bin/raumverwaltung_3.pl line 24.
Dubu
 2005-02-26 02:06
#52156 #52156
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Das Programm in der ersten Version laeuft hier (perl 5.8.1) auf der Kommandozeile problemlos durch.
pq
 2005-02-26 02:29
#52157 #52157
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
wieso benutzt du eigentlich Fcntl und schreibst dir die variablen
$LOCK_EX etc. selbst? ziemlich merkwürdig.
use Fcntl ':flock';
...
flock FH, LOCK_EX;
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
GwenDragon
 2005-02-26 09:13
#52158 #52158
User since
2005-01-17
14754 Artikel
Admin1
[Homepage]
user image
Code: (dl )
1
2
3
if( ! open( pidHdl, ">>$pidFile"))
{
  flock( pidHdl, $LOCK_UN);
Häääh, wenn ein Öfnnen nicht klappt, dann freigeben? Warum prüfst du nicht mal, was dein open als Fehlerstring in $! zurück gibt. Auf nicht zu öffnende Dateien kannst du auch kein Lock anwenden! Es ist ja kein gültiges FileHandle da!
Zudem klappt lock nur richtig auf UN*x-Rechnern!

Auf Perl 5.8.6 gibt es keine Fehlermeldung wegen des Barewords!\n\n

<!--EDIT|GwenDragon|1109421496-->
<< >> 6 Einträge, 1 Seite



View all threads created 2005-02-25 21:16.