Schrift
[thread]7608[/thread]

Problem opendir

Leser: 1


<< >> 6 Einträge, 1 Seite
Gast Gast
 2006-01-11 17:52
#61668 #61668
Hallo zusammen,
wenn ich den unten aufgführten Code ausführe bekomme ich folgende Fehlermeldung auf dem Unix-System: No such file or directory. Kann mir vielleicht jemannd weiterhelfen? Danke.

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
#!/usr/local/bin/perl
use File::Copy;
use Cwd;
use FileHandle;

open(DATEI,"<pfade.txt");
while($zeile=<DATEI>)
{
push(@patharray,$zeile);
}
close(DATEI);


for($i=0;$i<@patharray;$i++)
{
$srcPath = "@patharray[$i]";
opendir(inVERZ, $srcPath) || die "Verzeichnis ".$srcPath." nicht gefunden $!";

Anweisung

closedir(inVERZ);

}
Strat
 2006-01-11 18:40
#61669 #61669
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
#! /usr/bin/perl
# so sollte jedes perl script beginnen; hilft ungemein bei der fehlersuche
use warnings;
use strict;

# Dateinamen immer in einer Variable speichern, dann kann man die in
# fehlermeldungen recyclen
my $file = "pfade.txt";

# bei einem open immer Fehler abfangen:
open (DATEI, "<", $file) or die "Error in opening '$file': $!\n";

# dateiinhalt kann man gleich in ein array einlesen
my @patharray = <DATEI>;

# am ende des arrays stehen jedoch noch zeilenumbrueche; das duerfte
# wohl dein problem sein
chomp(@patharray);

close(DATEI);

# wenn du den schleifenindex nicht benutzt, warum dann einen verwenden?
# falls doch, finde ich for my $i (0..$#patharray) { besser lesbar
for my $dir (@patharray) {

# als file/dirhandles immer grossbuchstaben verwenden ist sicherer und
# wird auch von warnings nicht angemeckert
opendir (INVERZ, $dir) or die "Verzeichnis '$dir' nicht gefunden: $!\n";
# ....
closedir(INVERZ);

und @patharray[$i] ist ein arrayslice, d.h. eine liste, die aus einem Element besteht. warnings wuerde da rummotzen, also besser $patharray[$i] verwenden. In deinem Beispiel wuerde es sich allerdings zufaelligerweise gleich verhalten, aber manchmal kann das ein ganz schoener unterschied sein und schwierig zu findenden fehler verursachen, naemlich dann, wenn es auf den kontext ankommt
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
renee
 2006-01-11 23:31
#61670 #61670
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
bau mal noch ein chomp ein (nach close(DATEI)):

Code: (dl )
chomp(@patharray);
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/
esskar
 2006-01-12 18:15
#61671 #61671
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich trau dem chomp nicht, besser:

Code: (dl )
@patharray = map { s!\r?\n$!!g; $_ } @patharray;
\n\n

<!--EDIT|esskar|1137082644-->
Strat
 2006-01-12 18:27
#61672 #61672
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
@esskar: ich schon, vorausgesetzt $/ ist korrekt gesetzt (siehe den anderen thread new lines werden nicht erkannt\n\n

<!--EDIT|Strat|1137083273-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
renee
 2006-01-12 23:30
#61673 #61673
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dem chomp kann man schon vertrauen. Denn wenn $/ nicht richtig gesetzt ist, dann steht in dem Array sowieso nicht das was drinstehen sollte (in jedem Element ein Dateiname), weil dann die ganze Datei im ersten Element drinsteht...
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/
<< >> 6 Einträge, 1 Seite



View all threads created 2006-01-11 17:52.