Jemand zu Hause?
CSS::Minifier und
JavaScript::Minifier zur Komprimierung des Codes. Besonders angenehm finde ich, dass man ganze Romane zum Code schreiben kann und das kein anderer zu sehen bekommt, weil nur komprimiertes Zeug zum Hoster geht.
Perl::Strip in Frage. Und, natürlich,
Acme::Bleach von Damian Conway, das allerdings nicht komprimiert und auch ansonsten eher was für Leute mit schrägem Humor ist.
Perl::Squish, das macht das gleiche wie Perl::Strip, kommt aber ohne jede Gebrauchsanweisung daher.
Perl::Tidy interessiert mich sehr. Kennst du das zufällig auch?
Perl::Critic der Werkzeugkasten für konsistenten, styleguide-konformen Code. Die Tools sind beide absolut empfehlenswert, mit bestenfalls kleinen Abstrichen je nach Situation.
Object::Pad arbeite, dann führt deren erweiterte Syntax zu einigen Fehlalarmen, da muss man dann eben mit Augenmaß rangehen. Ich habe Deine Frage mal zum Anlass genommen, sowohl perltidy als auch perlcritic --brutal drüberlaufen zu lassen und werde wohl das eine oder andere anpassen, aber eher mit Schulterzucken als dogmatisch.
2021-09-28T07:20:46 hajDa kommtPerl::Strip in Frage.
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 31 32 33 34 35 36 37 38
#!/usr/bin/perl use strict; use warnings; use 5.010; require Perl::Strip; my $transform = new Perl::Strip(keep_nl => 1); my $source = <<'HEREDOC' my $testcode = 'Hallo'; # Testtext my @array = ( 2, 4, 6, 8, ' 10'," 1\" 2 "); my @array2 = qw(foo bar zorg); SPRUNGMARKE: # Abschnitt #################### print "testtext\n"; # Kommentar $xyz = <<HEREDOCIMHEREDOC Leerzeilen Leerzeilen Leerzeilen UNTEN HEREDOCIMHEREDOC ; $xyz =~ s/[ \n\r\t ]//g; goto SPRUNGMARKE; require Dies::Das; HEREDOC ; my $target = $transform->strip($source); say $target;
1 2 3 4 5 6 7
# ...Den Anfang habe ich abgeschnitten $xyz=<<HEREDOCIMHEREDOC ;$xyz =~ s/[ \n\r\t ]//g;goto SPRUNGMARKE;require Dies::Das; Leerzeilen Leerzeilen Leerzeilen UNTEN HEREDOCIMHEREDOC
2021-09-29T06:44:24 hajSo wie's aussieht, ist keep_nl gar nicht implementiert (ein Hinweis darauf ist im Changelog zu finden).
2021-09-28T07:20:46 hajUnd, natürlich,Acme::Bleach von Damian Conway, das allerdings nicht komprimiert und auch ansonsten eher was für Leute mit schrägem Humor ist.
2021-09-28T07:20:46 hajEs gibt auchPerl::Squish, das macht das gleiche wie Perl::Strip, kommt aber ohne jede Gebrauchsanweisung daher.
PPI::Transform-compatible Klasse ist. Dann schaue ich dort rein aber verstehe selbst nach der Deutsch Übersetzung nur wenig. Ist
PPI::Transform eine Art Container innerhalb dessen das
Perl::Squish als Kind läuft? Wie sieht dafür die Syntax aus?
1 2 3
use Perl::Squish; my $transform = Perl::Squish->new; $transform->file('uncompressed.pl' => 'compressed.pl');
2021-09-29T20:03:07 hajNa ja, einfach mal ausprobieren mit dem wenigen was dasteht
2021-09-29T20:26:58 biancaWie bist du auf die Syntax gekommen?
PPI::Transform ist unter der Überschrift "file" ein Beispiel, das sah einfach aus. Und weil
Perl::Squish behauptet, es funktioniere genauso, habe ich erwartet, dass es eben ganz ohne weitere Einstellungen das tut, was auf der Packung steht, wenn man's genau so benutzt.2021-09-29T20:26:58 biancaWas ist mit diesen Hinweisen auf das PPI Dingsda gemeint?
PPI ist der recht brauchbare Versuch, Perl statisch zu analysieren - das heißt also, es parsen, ohne Teile davon auszuführen. Das Ergebnis dieser Analyse kann man dann bearbeiten und zurückschreiben. In der "Synopsis" zu
PPI stehen ein paar Beispiele, die letzten drei Statements dürften ziemlich genauso bei Dir ablaufen.
Perl::Squish (übrigens vom gleichen Autor) ist also einfach eine spezielle praktische Anwendung von PPI. Weil besagter Autor wohl dachte, PPI kennt eh jeder, hat er sich mit der Beschreibung von Perl::Squish sichtlich keine Mühe gegeben.2021-09-29T20:26:58 biancaEs arbeitet übrigens fast wie von mir erwartet. Die Shebang müsste man halt am Ende wieder einfügen aber der Rest sieht bis jetzt gut aus. Für diesen Tipp nochmal danke!
Tipp zum Debugging