Am Dienstag, 17. Februar 2004 22:57 schrieb Joel HATSCH: > On Tue, 17 Feb 2004 18:48:40 +0100 > > Stefan Blechschmidt <[EMAIL PROTECTED]> wrote: > > dann ist der Weg zu perl nicht weit :-) > > > > ,---[ csvtostuct.pl ] --------------------- > > > > | #!/usr/bin/perl > > | open (FH, "<$ARGV[0]"); > > | while (<FH>) { > > | chomp; > > | @inhalt = split (';', $_); > > | system("mkdir $inhalt[0]"); > > | system("echo \"$inhalt[2]\" > $inhalt[0]/$inhalt[1]"); > > | } > > | close(FH); > > > > `----------------------------------- > > fuktionniert prinzipiell, aber wenn ich mich richtig erinnere > werden bei deinen 2 system()-Aufrufe jeweils shell-child-Prozesse > gestartet. kostet Zeit. > bei ein Paar Zeilen kein Problem, bei viele viele Aufrufe tötlich > langsam ! > bei dem Shell-Skript hast Du eben das Problem nicht. > > Wie gesagt, frei aus dem Gedächtnis raus
Das ist ein tödlicher Irrtum ;-) In einem Shell-Script werden natürlich auch für _jeden_ Befehl, der nicht Shell-Builtin ist, Childs gestartet, also im Allgemeinen deutlich mehr als in Perl-Programmen (Du musst ja die Zeile parsen - z. B. per cut). Prinzipiell hast Du mit dem Einwand recht, aber Perl wäre nicht Perl, wenn man das nicht besser lösen könnte ;-) #!/usr/bin/perl open (FH, "<$ARGV[0]") or die $!; while (<FH>) { chomp; @inhalt = split /;/; mkdir $inhalt[0]; open (OUT, ">" . $inhalt[0] . "/" . $inhalt[1]) or die $!; print OUT $inhalt[2], "\n"; close OUT; } close(FH); Jan -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)