Hi Uwe, *,
2011/7/31 Uwe Richter <richter68@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+help@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
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.