Hi Uwe, *, 2011/7/31 Uwe Richter <richte...@gmx.de>: > Am 31.07.2011 21:46, schrieb Friedrich Strohmaier: >> Am 31.07.2011 19:45 schrieb Uwe Richter: > [...] > >>> Dies ist mein erstes Perl Script und hat mich einen Tag gekostet. >> >> Alle Achtung. Dafür, dass es ein Erstlingswerk ist - nicht schlecht! >> :o)) >> > Danke! War aber viel try and error. :-)
Man merkt schon, daß es ein "Erstlingswerk" ist, es ist recht wenig perl-like, z.B. array abgrasen per iterator-variable ist nicht perl-typisch, aber davon abgesehen. >>> Hinweise wie man das Ganze eleganter lösen kann nehme ich gerne >>> entgegen. ;-) >> >> Nun, ohne Rückfrage das aktuelle Verzeichnis rekursiv löschen lassen, >> ist außerordentlich mutig. :o)) Jup, das ist ziemlich gefährlich. $dir sollte auf plausibilität geprüft werden, bzw. gleich ein temporäres Verzeichnis anlegen und dort die Arbeit machen. Was auch "häßlich" ist, ist die fehlende Dokumentation, was es denn mit den ebenso unansehnlichen @sof array auf sich hat. Da ist viel redundant - der Sprachcode steckt ja beispielsweise 1:1 im Dateinamen drin, und was es mit den Indizes auf sich hat ist mir beim ersten kurzen Bick auch nicht klar geworden. Variablen könnten auch "sprechender" sein. @ndir ist nicht ganz klar, @odir ist evtl output-dir. Aber damit nicht nur gemeckert wird, sonder auch was konstruktives dabei rumkommt.. my $newdir; my $i; for ($i=0; $i<=$#ndir; $i++) { $newdir = $dir . $ndir[$i]; make_path($newdir); } ist wiegesagt wenig perl-like foreach my $newdir (@ndir) ( make_path($dir.$newdir); } triffts schon eher, kann man per map noch weiter kürzen (make_path akzeptiert ja mehrere Pfade auf eimal), aber dann kan man sich streiten zwecks Wartungsfreundlichkeit durch "Neulinge" die sich dann erst einarbeiten müssen....: make_path( map { $dir.$_ } @ndir ); Das wäre "perl-like" Aber wiegesagt, daß @soft-Array bedarf der Erläuterung - ebenso die "magic numbers" in den For-Schleifen (und vermutlich gehts perl-like auch viel übersichtlicher :-) Reicht doch eine Liste mit den gewünschten Sprachen, der Rest kann sich doch das Skript zusammensuchen.... Warum also zig Einträge für die installer, helppacks und langpacks vorhanden sind leuchtet mir nicht ein, hast ja schon use File::Find; mit drinnen, aber dann bastelst Du Dir die Pfade umständlich über indizierte Arrays mit mehreren Ebenen und mehreren Arrays zusammen. Das harlinken der Installer, nur um sie nach dem Auspacken wieder zu löschen ist auch unnötig, man kann auch tar auch mit der Datei im mirrorverzeichnis ausführen. ciao Christian -- Informationen zum Abmelden: E-Mail an discuss+h...@de.libreoffice.org Tips zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de Listenarchiv: http://listarchives.libreoffice.org/de/discuss/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert