Schrift
[thread]8865[/thread]

-e bringt unterschiedliche Ergebnisse: Ursachen?

Leser: 1


<< |< 1 2 >| >> 19 Einträge, 2 Seiten
pktm
 2007-03-22 22:43
#75271 #75271
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich habe 2 Skripten.
In einem gibt mir -e $datei zurück, dass die Datei nicht existieren würde, im anderen Testskript existiert sie laut -e $datei.

Um das zu testen habe ich mir das, was in dem ursprünglichen Skript in $datei steht ausgeben lassen, kopiert und 1:1 in das Testscript eingefügt.

Wie kann das sein? Und vor allem, wo soll ich jetzt anfangen Fehler zu suchen? Was könnte Ergebnisse von -e modifizieren?

Es ist ein absoluter Dateipfad.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
pq
 2007-03-22 22:53
#75272 #75272
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
vielleicht läuft das andere script mit anderen rechten, und darf gar nicht in das verzeichnis schauen, in dem die datei liegt.
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
pktm
 2007-03-22 23:05
#75273 #75273
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Nein, ich entwickle hier unter Windws *duck*
http://www.intergastro-service.de (mein erstes CMS :) )
Froschpopo
 2007-03-22 23:29
#75274 #75274
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
vielleicht musst du bei -e einen absoluten pfad angeben (falls du in einem script vielleicht ein chdir vergessen hast)
renee
 2007-03-23 10:45
#75275 #75275
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@Froschpopo: Er hat ja geschrieben, dass es ein absoluter Pfad ist. Außerdem klappt das -e auch mit relativen Pfaden.

@pktm: sicher, dass die Verzeichnisstruktur genauso auch auf dem Testrechner existiert? Ist die Laufwerksangabe richtig?
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/
pktm
 2007-03-23 11:48
#75276 #75276
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ja, die Verzeichnisstruktur existiert so. Der Pfad stammt aus einem Tk::getOpenFile() - Dialog. Das Testscript liefert ja auch das richtige Ergebnis. Ich habe zusätzlich auch mal getestet, ob die Datei gefunden wird, wenn ich den Pfad im Explorer eingebe, was mir die Datei geöffnet hat (ist eine Textdatei).

Gibt es da eventuell Probleme mit Leerzeichen oder Punkten im Dateipfad?
Der Pfad sieht so aus: C:/Dokumente und Einstellungen/root/Eigene Dateien/UNI/Computerlinguistik Potsdam/3. Semester WS 06/Statistische maschinelle Übersetzung/src/Prämissen.txt

Ich habe in meinem Testskript auch mal alle Module eingebunden, die in dem anderen Skript auch verwendet werden.
Die Anweisung zum Prüfen der Existenz ist jeweils die Selbe: say (-e $datei ? 'existiert' : 'gibts nicht');

Ich schnall das nicht :(
http://www.intergastro-service.de (mein erstes CMS :) )
pktm
 2007-03-23 11:58
#75277 #75277
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hui, Neuigkeiten: es scheint irgendwie an der Kombination getOpenFile()-Dialog und Typisch-Windows-Pfad zu liegen.
Mit meinem neuen testscript, welches den Dialog nachbaut komme ich zum selben Ergebnis:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/Perl/bin/perl

use strict;
use warnings;
use Data::Dumper qw/Dumper/;
use FindBin qw($Bin);
use Carp;
use FileHandle;
use Perl6::Say;
use Tk;

# -- alter Test:
#my $datei = "C:/Dokumente und Einstellungen/root/Eigene Dateien/UNI/Computerlinguistik Potsdam/3. Semester WS 06/Statistische maschinelle Übersetzung/src/Prämissen.txt";
#say (-e $datei ? 'existiert' : 'gibts nicht');


# -- neuer Test:

my $heap = {};
$heap->{zulaessigeDateitypen} = [
["Textdateien",[".txt"]],
["Text files", '', 'TEXT' ],
["All files", '*' ]
];

my $mw = Tk::MainWindow->new();

my $b = $mw->Button(
-command => sub{ getDatei($heap, $mw); },
-text => 'drück mich!',
)->pack();

sub getDatei {
my $heap = shift;
my $mw = shift;

my $datei = $mw->getOpenFile(
-filetypes => $heap->{zulaessigeDateitypen},
-initialdir => $Bin,
-multiple => 0,
);

if( $datei ) {
say "Es wurde eine Datei angegeben: [$datei]";

if( -e $datei ) {
say "Die Datei existiert";
}else{
say "die Datei existiert nicht!";
}
}
} # /getDatei

$mw->MainLoop();


Der Pfad aus dem letzten Beitrag geht nicht, c:\README.TXT und c:\zwischen\test.txt gehen.
Das ist seltsam. EVentuell muss ich den Pfad wenn er aus dem Dialog kommt noch vorverarbeiten?
http://www.intergastro-service.de (mein erstes CMS :) )
pktm
 2007-03-23 12:04
#75278 #75278
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Es lag an den Umlauten im Dateinamen...
ä.txt wird nicht gefunden, egal wo es liegt.

Wie kann man das ändern? Ich will auch Dateinamen mit Umlauten auswählen können!
http://www.intergastro-service.de (mein erstes CMS :) )
renee
 2007-03-23 12:10
#75279 #75279
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Da hatten wir letzt schonmal einen Thread zu dem Thema... Das ist wohl wieder eine Sache für ptk...
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/
GoodFella
 2007-03-24 00:13
#75280 #75280
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
[quote=pktm,23.03.2007, 11:04]Es lag an den Umlauten im Dateinamen...
ä.txt wird nicht gefunden, egal wo es liegt.

Wie kann man das ändern? Ich will auch Dateinamen mit Umlauten auswählen können![/quote]
Ich hab das Problem vor einiger Zeit auch mal gehabt, Lösung war: alle Slashes gegen Backslashes auszutauschen, utf8::downgrade auf den Dateinamen anzuwenden und use locale; zu benutzen ( dazu müssen aber umgebungsvars gesetzt sein ), gab glaube noch andere Lösungen, der Thread dazu muss hier irgendwo im Forum rumfliegen :)
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2007-03-22 22:43.