Schrift
[thread]7637[/thread]

Netzwerkverzeichnis mit opendir (Seite 2)



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
renee
 2006-01-24 03:37
#62092 #62092
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Liegt es wirklich im selben Verzeichnis wie das Skript?? Wohl eher nicht, oder?? Es wird vermutlich auf dem Samba-Verzeichnis liegen...

Du willst wohl eher:
Code: (dl )
1
2
3
4
my $source = "smb://bioboss/shared/Hubert/Blast/$file";
my $fd = $smb->open($source, '0666');
while (defined(my $l= $smb->read($fd,50))) {print $l; }
$smb->close($fd);
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/
pq
 2006-01-24 11:35
#62093 #62093
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=paidopoieo,24.01.2006, 01:47]hi,
und das file gibt es[/quote]
merke: wenn perl dir sagt "no such file or directory", dann hat perl in den
allermeisten fällen recht.
wenn du wirklich sicher sein solltest, es gibt eine datei und perl bringt
trotzdem diese fehlermeldung, bist du herzlich eingeladen, ein script
zu basteln, dass auf diesen fehler reduziert ist, ihn aber nachvollziehbar
reproduziert.
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
nepos
 2006-01-24 12:44
#62094 #62094
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Eventuell passt auch was mit Gross-/Kleinschreibung ned.
renee
 2006-01-25 00:55
#62095 #62095
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das wird schon passen, da paidopoieo die Dateinamen ja ausliest und nicht manuell eingibt. Aber wenn man in den Code schaut, dann sieht man, dass er versucht die Datei im aktuellen Verzeichnis zu oeffnen. Das wird im Allgemeinen aber nicht funktionieren - ausser es gibt durch Zufall im aktuellen Verzeichnis eine Datei mit dem gleichen Namen...
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/
murphy
 2006-01-25 11:54
#62096 #62096
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=pq,24.01.2006, 09:35][quote=paidopoieo,24.01.2006, 01:47]hi,
und das file gibt es[/quote]
merke: wenn perl dir sagt "no such file or directory", dann hat perl in den
allermeisten fällen recht.
[...][/quote]
Wenn dieser Fehler aufträte, aber nicht den Tatsachen entspräche, so deutete das nicht auf einen Fehler in Perl, sondern im Systemkern hin. Das wäre schon ziemlich übel, aber wie pq schon bemerkte, weiß das System meistens besser als man selbst, was wirklich im Dateisystem liegt ;)
When C++ is your hammer, every problem looks like your thumb.
Strat
 2006-01-25 15:18
#62097 #62097
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
1. warum nicht zuerst mal bei
Code: (dl )
my $fd = $smb->opendir("smb://bioboss/shared/Hubert/Blast");

fehler abfangen? ist da 100% sicher, dass da nie was passieren kann?

2. my-variablen immer so knapp wie moeglich definieren, also z.B. nicht
Code: (dl )
1
2
my $file;
foreach $file (@thefiles) {

sondern
Code: (dl )
foreach my $file (@thefiles) {

dann ist $file nur im block der foreachschleife gueltig, und nicht auch vorher und nachher. der Wert von $file ist nach der schleife genau derselbe wie vor der schleife, weil for(each) da einen alias auf das listenelement bildet; wenn man wirklich nach der schleife $file braucht, dann kann man es ja auch dann definieren/deklarieren, z.B.
Code: (dl )
1
2
3
4
foreach my $file (@thefiles) {
# ...
} # foreach
my $file = "irgendwas";


3. genauso bei @rawdata: wenn du es ausserhalb der aeusseren schleife nicht verwendest, dann muss es da auch nicht deklariert sein.

4.
Code: (dl )
open (bigShot, ">>hello_Jesus.txt") || die ("Could not open file. $!");

Es wird empfohlen, Filehandles immer mit grossbuchstaben zu schreiben.
Ich empfehle folgendes konstrukt:
Code: (dl )
1
2
3
4
my $fileJesus = "hello_Jesus.txt";
open (my $JESUS, ">>", $fileJesus) or die "Error: couldn't open file '$fileJesus': $!\n";
print $JESUS "irgendwas\n";
close ($JESUS);

durch den lexikalischen Fielehandle ist dieser nur innerhalb dieses blockes gueltig, und du musst dich (kaum) darum kuemmern, was fuer filehandlenamen ausserhalb alle verwendet werden.
Code: (dl )
1
2
3
4
5
6
open (FH, "<", $file1) or die;
while (my $line = <FH>) {
chomp($line);
open (FH, "<", $line) or die;
my $firstLine = <FH>;
}

hier liest dann die while-schleife die erste zeile aus $file1 und dann ab der zweiten zeile von $file2... und wenn sowas ueber mehrere subroutinen hinweg verstreut ist, wird sowas manchmal sehr schwer zu finden

5. die zeilen
Code: (dl )
1
2
@raw_data = <DAT>;
foreach my $wrestler (@raw_data)

kann man auch zusamenfassen, wenn du @raw_data nur fuer die schleife verwendest
Code: (dl )
foreach my $wrestler (<DAT>) {

das wuerde die komplette datei auf einmal in den RAM lesen und danach ueber die einzelnen zeilen laufen (weil <DAT> im listenkontext verwendet wird, was die komplette datei einliest).
wenn du immer nur eine zeile brauchst und nicht mehrere gleichzeitig, ist der folgende weg sparsamer:
Code: (dl )
1
2
3
while (my $wrestler = <$DAT>) {
print "blabla: $wrestler";
}

weil <..> im skalaren kontext immer nur die naechste zeile einliest, und somit immer nur eine zeile im RAM ist (gerade bei groesseren Dateien ist das ein muss)

6.
Code: (dl )
print bigShot ($wrestler);

kann eventuell mal probleme bereiten, wenn es eine funktion namens bigShot gibt (nicht allerdings mit lexikalischen Filehandles)
deshalb besser entweder:
Code: (dl )
print (BIGSHOT "blabla\n");

oder
Code: (dl )
print BIGSHOT "blabla\n";

oder noch besser:
Code: (dl )
print $BIGSHOT "blabla\n";
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
paidopoieo
 2006-02-08 22:56
#62098 #62098
User since
2005-12-02
96 Artikel
BenutzerIn
[default_avatar]
hi,
dankeschoen fuer die ausfuehrungen waren sehr hilfreich...

mfg
Hubert
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2006-01-20 02:48.