Leak Geschrieben 23. August 2011 Geschrieben 23. August 2011 Es handelt sich um ein kleines Script, welches mir Probleme bereitet.. #!/usr/bin/perl my $filename = 'number2.xml'; use XML::Simple qw(:strict); my $read = XMLin($filename, ForceArray => 1, KeyAttr => {}, ); foreach my $st (@{$read->{page}}) { print $st->{filespec}->[0], "\n" } sleep (300); Könnt ihr mir bitte sagen, ob es hier irgendwelche gravierenden Fehler gibt? Die xml Datei heißt number2.xml und sieht ca. so aus: <Folder> <Document> <Page> <Image ImageNr="1" FileSpec="blaa.blaa"/> </Page> <Page> <Image ImageNr="2" FileSpec="bloe.bloe"/> </Page> <Entry Bottom="-32767" Right="-z" Top="x" Left="y" Content="936500053"/> </Page> </Document> </Folder> .. Ich weiß beim besten Willen nicht, was hier nicht funktioniert.. Der Fehler, welcher mir angezeigt wird besagt, dass es die .xml Datei nicht gibt (obwohl es sie definitiv gibt und sie auch im selben Pfad liegt) Danke
habbeda Geschrieben 23. August 2011 Geschrieben 23. August 2011 Die xml Datei heißt number2.xml und sieht ca. so aus: Script ansich sieht soweit gut aus (ich selbst bevorzuge allerdings XML::Parser). Das XML allerdings sieht nicht gut aus und angegebenes Script mit angegebenen XML wirft einen berechtigten Fehler aus. Da das aber nicht Dein eigentliches Problem ist: 1. Bitte die genaue Fehlermeldung. 2. In welchem Kontext wird das Script aufgerufen? Kommandozeile, Webserver, oder etwas anderes? 3. Bereits versucht, den aktuellen Pfad des Skriptes ausgeben zu lassen? (siehe Cwd)
Leak Geschrieben 24. August 2011 Autor Geschrieben 24. August 2011 Das Script wird mit der Windows Eingabeaufforderung geöffnet. Der Fehler lautet: "File does not exist: number2.xml at C:\Users\..\MeinOrdner\auslesen.pl line 6 zu 3.: Nein.. und ich weiß auch nicht wie, weil ich totaler Anfänger in Perl bin .. Totale Ahnungslosigkeit -.-
Leak Geschrieben 24. August 2011 Autor Geschrieben 24. August 2011 Info: Da das Script bei mir einige Abstände enthält, ist line 6 in diesem fall bei mir my $read = XMLin($filename,
etreu Geschrieben 24. August 2011 Geschrieben 24. August 2011 Du befindest dich beim Ausführen des Skripts im selben Verzeichnis, wo die xml-Datei liegt?
Leak Geschrieben 24. August 2011 Autor Geschrieben 24. August 2011 Ja, die beiden Dateien liegen im selben Ordner.
etreu Geschrieben 24. August 2011 Geschrieben 24. August 2011 Und in welchem Ordner befindest du dich?
Leak Geschrieben 24. August 2011 Autor Geschrieben 24. August 2011 In dem Ordner aus der Fehlermeldung: "C:\Users\..\MeinOrdner\" In diesem Ordner sind Perl Script (auslesen.pl) und die XML-Datei (number2.xml)
habbeda Geschrieben 24. August 2011 Geschrieben 24. August 2011 zu 3.: Nein.. und ich weiß auch nicht wie, weil ich totaler Anfänger in Perl bin .. Totale Ahnungslosigkeit -.- Dann prüfe es doch einmal mittels use Cwd; my $current_path = cwd; Dann weißt Du, ob das Skript auch wirklich in dem Verzeichnis arbeitet, welches Du vermutest. Keine Ahnung, ob es unter Windows diesbezüglich Tücken gibt. Nur am Rande: benutzt Du ActiveState oder Strawberry?
Leak Geschrieben 25. August 2011 Autor Geschrieben 25. August 2011 Mit dem Befehl use Cwd; my $current_path = cwd; print $current_path; wird mir immer nur der Pfad angezeigt, in dem die Eingabeaufforderung momentan ist (also "C:\Users\x\") Ich benutze ActiveState.. gibts da Unterschiede?
habbeda Geschrieben 25. August 2011 Geschrieben 25. August 2011 Der Fehler lautet: "File does not exist: number2.xml at C:\Users\..\MeinOrdner\auslesen.pl line 6 [...]Pfad angezeigt, in dem die Eingabeaufforderung momentan ist (also "C:\Users\x\") Sind die beiden Pfade - also aus Fehlermeldung und Cwd - gleich? (Die beiden Zitierten sind es ja schließlich nicht.) Ich benutze ActiveState.. gibts da Unterschiede? Halte ich mal nicht für ausgeschlossen. Strawberry wurde zumindest mal bei uns empfohlen, da die Installation von CPAN-Modulen besser umgesetzt sein soll als bei ActiveState. Auch meine ich mal gelesen zu haben, dass Strawberry näher an Perl dran sei als AS. Da ich allerdings nicht mit Windows arbeite, kann ich dazu nicht viel sagen. Funktioniert das Einlesen der XML-Datei denn wenigstens bei einer absoluten Pfadangabe?
Leak Geschrieben 26. August 2011 Autor Geschrieben 26. August 2011 Komischerweise Funktioniert es jetzt.. Ich habe ein bisschen rumexperimentiert (bisschen=lange ) .. Ich weiß zwar nicht wo der Fehler lag aber Hauptsache es funktioniert Danke trotzdem für das Interesse an meiner Fragestellung
Mr Unix Geschrieben 31. August 2011 Geschrieben 31. August 2011 Es handelt sich um ein kleines Script, welches mir Probleme bereitet.. #!/usr/bin/perl my $filename = 'number2.xml'; use XML::Simple qw(:strict); my $read = XMLin($filename, ForceArray => 1, KeyAttr => {}, ); foreach my $st (@{$read->{page}}) { print $st->{filespec}->[0], "\n" } sleep (300); Könnt ihr mir bitte sagen, ob es hier irgendwelche gravierenden Fehler gibt? Die xml Datei heißt number2.xml und sieht ca. so aus: <Folder> <Document> <Page> <Image ImageNr="1" FileSpec="blaa.blaa"/> </Page> <Page> <Image ImageNr="2" FileSpec="bloe.bloe"/> </Page> <Entry Bottom="-32767" Right="-z" Top="x" Left="y" Content="936500053"/> </Page> </Document> </Folder> .. XML::Simple sucht im SearchPath und CWD nach der Datei, sofern du keinen Absoluten Pfad angegeben hast: XML::Simple - search.cpan.org) Allerdings wuerde ich dir von XML::Simple abraten. Damit kann einem leicht die eigene Datenstruktur um die Ohren fliegen. Hier ist ein toller Artikel zu dem Thema: Stepping up from XML::Simple to XML::LibXML
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden