Schrift
[thread]7711[/thread]

Anfänger-Frage: Was bedeutet if (! -e $xyfile)



<< >> 4 Einträge, 1 Seite
pap511
 2006-02-15 12:42
#62994 #62994
User since
2006-02-15
1 Artikel
BenutzerIn
[default_avatar]
Hallo, ich habe ein Perl Script, das eine ASCII Datei öffnen soll und diese dann weiterbearbeiten soll. Das Problem ist, ich bekomme immer die Fehlermeldung, dass die Datei nicht geöffnet werden kann.
Die Datei existiert, habe mit chmod 755 Schreibzugriff etc. gesetzt, wird auch nicht von anderen Programmen verwendet, deshalb gibt es aus meiner Sicht eigentlich gar keinen Grund für die Fehlermeldung.

Im Script finde ich dann diese Zeilen:
Code: (dl )
1
2
3
4
5
6
7
foreach $xyfile (@xyfiles) {
if (! -e $xyfile)
{
print "\a";
die "\nInput file $xyfile cannot be opened!\n$program_name aborted\n";
}
}



Was bedeutet der Ausdruck
Code: (dl )
if (! -e $xyfile)

eigentlich? (Das $xyfile eine Variable ist, die den Dateinamen enthält, ist mir schon klar).

Danke!
esskar
 2006-02-15 12:46
#62995 #62995
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
das -e sagt dir, ob die datei/das verzeichnis existiert.
das beispiel überprüft, ob das, was in $xyfile nicht existiert.
man hätte auch
Code: (dl )
unless(-e $xyfile)

schreiben können


perldoc -f -e
Crian
 2006-02-15 13:30
#62996 #62996
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Der Code testet für alle Dateien im Array @xyfiles, ob sie existieren. (Dabei wird noch nicht unterschieden, was für Dateitypen das sind (könnten auch Verzeichnisse, Links, Pipes etc. sein).

Was steht denn als Dateiname in der Fehlermeldung? Schlägt es gleich bei der ersten Datei fehl (dann gibt es vielleicht ein Problem mit dem Verzeichnis in dem gesucht wird) oder bei einer speziellen Datei?

Normalerweise kann man sich darauf verlassen, dass die Datei nicht da ist, wenn Perl (bzw. das Betriebssystem) sie nicht findet.

Wie sehen die Dateinamen in dem Array aus? Mit vollständigem Pfad? mit Slashes oder mit Backslashes? Wie wird das Array befüllt?

*glaskugelpolier*
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
renee
 2006-02-15 15:13
#62997 #62997
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Meistens liegen solche Fehler an den relativen Pfaden... Wenn in $xyfile einfach ein dateiname.endung steht, dann muss die Datei in dem Ordner sein, von dem aus das Skript gestartet wurde...
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/
<< >> 4 Einträge, 1 Seite



View all threads created 2006-02-15 12:42.