2010-10-16 21 views
15

Un gatto della mia azienda ha camminato su una tastiera e ha lasciato una riga valida 1000+ di codice Perl eseguibile da mantenere.Come posso riordinare automaticamente il codice sorgente Perl?

Grazie alla filosofia TMTOWTDI di Perl, mi trovo a cercare su Google di dare un senso a ogni riga di codice che ha prodotto.

Per aggiungere alla mia sofferenza il codice non è indentato e si trovano frequenti occorrenze delle due istruzioni su una riga, l'incapacità di capire se un ciclo è esterno/interno.

Come posso autointendere questo codice Perl in sanità mentale? Sì, scommetto che ci sarebbe qualche modulo CPAN che lo faccia. Che ne dici di qualche strumento esterno? Qualche indizio?

+0

-1 per l'ilarità – MkV

+1

@MkV Che fa male –

+5

+1 per ilarità :) – ttvd

risposta

22

Perl::Tidy può farlo e molto altro. Di solito viene utilizzato tramite l'eseguibile perltidy che installa.

6

Perl Tidy è un'utilità davvero utile. Viene fornito con una gamma di opzioni offset.
V'è una guida a http://perltidy.sourceforge.net/ e http://perltidy.sourceforge.net/tutorial.html

Per esempio -i=8 overides il numero di spazi per il rientro (default = 4) e -bl mette tra parentesi graffe in una nuova riga:

if ($something) 
{ 
    print "....."; 
} 

Vorrei suggerire a giocare su una copia del codice e vedere quale opzione ti piace di più.

È possibile installarlo da CPAN o varie altre opzioni su http://perltidy.sourceforge.net/ a seconda della piattaforma e del gusto!

6

Ecco alcuni esempi di come utilizzare perltidy con un comportamento non predefinito:

  • Abilita coccolato-elses (es. } else {), limite linea lunghezze a 300 caratteri per tutti i file .pl

    $ perltidy -ce -l=300 *.pl 
    
  • Mantenere vecchi punti di interruzione virgola, congelare spazi vuoti esistenti in script.pl

    $ perltidy -boc -fws script.pl 
    
  • script di backup e modificare script1.pl, script2.pl sul posto

    $ perltidy -b script1.pl script2.pl 
    
  • 'Obfuscate' script spogliandola di quanto gli spazi vuoti come possibile.

    $ perltidy --mangle scipt.pl 
    
1

Come molte altre cose, se si search CPAN, avete la vostra risposta più velocemente di quanto ci vuole di effettuare il login a Stack Overflow. :)

In questo caso, è Perl::Tidy come altre persone hanno già menzionato. Abbiamo qualche consiglio in più su questo in Programmazione Perl efficace.

Problemi correlati