Thread Starten von Programmen nach Erstellung eines Files (14 answers)
Opened by giordani at 2010-07-07 11:12

Linuxer
 2010-07-08 10:23
#139667 #139667
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Nein, "Unmut" war nicht vorhanden als ich den Beitrag geschrieben habe ;o)

zu 1) catfile() baut (nur) den Pfad zusammen, stimmt schon. Aber es beachtet, auf welchem System es läuft und verwendet den jeweiligen Verzeichnistrenner. Wenn Du bei der Definition von $ordner mal das abschließende / vergessen solltest, ergänzt catfile() den entsprechenden Verzeichnistrenner selber, während das Anhängen via . dies nicht tut. Da sehe ich den Vorteil drin.

zu 2) Ich würde den Raum so klein wie möglich halten, so dass die Chancen minimiert werden, dass irgendein Unsinn zwischenzeitlich passiert (Verzeichnis wird gelöscht, erhält andere Rechte, ...).

zu 3)
Du hast im ersten Code sleep(10) eingebaut korrekt. die Schleife steckt aber im zweiten Code.
Der erste Code wird via system() aufgerufen und abgearbeitet (auch das sleep(10)); danach geht's im zweiten Code weiter mit der Schleife.

zu 5)
opendir DIR, $dir || die "..."; bedeutet: opendir DIR, ( $dir || die "..." );.
D.h. es wird geprüft, ob $dir wahr ist (also etwas enthält, dass kein Leerstring, keine 0 und definiert ist); wenn nicht wird der rechte Teil (also das die "" ausgeführt; das Ergebnis dieser Entscheidung wird dann dem opendir als zu öffnendes Verzeichnis gegeben. (Im Falle des die() kommt es aber nicht mehr dazu...)

Testcode:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#! /usr/bin/perl
use strict;
use warnings;

# verwende Pfad zur Skriptdatei
my $file = $0;

### versuche nun, eine Datei als Verzeichnis zu oeffnen
### opendir muss dadurch fehlschlagen

# erzeugt keine Fehlermeldung!
opendir DIR, $file      || warn "1. opendir failed: $!\n";

# Fehlermeldung
opendir DIR, $file      or warn "2. opendir failed: $!\n";
# Fehlermeldung
opendir( DIR, $file )   || warn "3. opendir failed: $!\n";

__END__


zu 6)
Eine Alternative hatte ich ja beschrieben. Das erste Skript stirbt, wenn die Datei nicht angelegt werden konnte und gibt einen Status (Returncode) != 0 zurück. Das zweite Skript prüft diesen Status und handelt
entsprechend.

edit: fixed code comment; added "Im Falle ..."
Last edited: 2010-07-08 12:13:10 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Starten von Programmen nach Erstellung eines Files