piapia123
es

Formateador de código Perl

Formato

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

Reindenta el código Perl. No se cuentan llaves: se usa un analizador de verdad (tree-sitter) que convierte el código en un árbol de sintaxis y decide a partir de la gramática cuántos niveles se sangra cada línea. ¿Por qué merece la pena un analizador aquí en especial? El método de «contar llaves» no distingue si una `}` está en el código o dentro de una cadena o un comentario, y Perl está lleno de esa trampa: `$h->{key}`, `"${name}"`, `q{...}`. Un archivo que contenga `"}"` descoloca todas las líneas siguientes y no da ninguna pista de qué falló. Con un árbol de sintaxis, los límites de bloque los pone el analizador. ⚠️ Solo cambia el espacio en blanco al principio de cada línea; ni un carácter del interior. Es una restricción deliberada: el peor fallo de un formateador no es una salida fea, sino romper código que funcionaba. Por eso aquí no se ajustan los espacios internos, ni se reordena, ni se reajusta el ancho, ni se borran líneas. ⚠️ El cuerpo de un heredoc y las directivas POD se dejan enteros. Las dos cosas son propias de Perl: el cuerpo de un heredoc es contenido de cadena, así que sangrarlo inserta espacios en tus datos (peor aún con `<<~`, donde el sangrado relativo de las líneas del cuerpo *es* el significado); y las directivas POD deben empezar en la columna 0 — sangra una y Perl deja de tratarla como POD, la analiza como código y da error de sintaxis. Ningún otro lenguaje aquí necesita esto, por eso Perl lo trata aparte. El código incompleto también produce salida, sin error: así funciona formatear mientras escribes.

Funciones

  • Un análisis real con tree-sitter: el sangrado sigue la gramática, no el conteo de llaves
  • Los paréntesis dentro de cadenas, comentarios y `q{}` no afectan a la estructura
  • El cuerpo de un heredoc y las directivas POD no se tocan nunca — una protección propia de Perl
  • Solo cambia el espacio inicial; ni un carácter del interior de la línea
  • Sangrado con 2 espacios, 4 espacios o tabulador
  • El código incompleto produce salida igualmente, sin error
  • Salida con resaltado de sintaxis
  • Se ejecuta entero en tu dispositivo: el código no se sube nunca

Cómo se usa

  1. Pega el código en el panel izquierdo
  2. Elige el ancho del sangrado
  3. Pulsa Ctrl/⌘ + Enter o haz clic en «Ejecutar»
  4. Copia el resultado

Preguntas frecuentes

¿En qué se diferencia de otros formateadores en línea?
La mayoría hace un sangrado a nivel de texto: recorre carácter a carácter, sangra al ver `{` y desangra al ver `}`. No pueden distinguir si una llave está en el código o dentro de una cadena. Aquí se usa un analizador real: el código se convierte primero en un árbol de sintaxis y la profundidad de cada línea la decide la estructura gramatical a la que pertenece. El precio es un archivo de gramática de Perl más el motor del analizador (unos 4,4 MB en total), que solo se descarga al abrir la página de esta herramienta. A cambio obtienes una detección de estructura que no adivina.
¿Se modifican los heredoc y las directivas POD?
No, y aquí hay un cuidado propio de Perl. El cuerpo de un heredoc y las directivas POD (como `=head1`) no se tocan en absoluto: el cuerpo de un heredoc es contenido de cadena, así que sangrarlo mete espacios en tus datos; y las directivas POD deben empezar en la columna 0, de modo que al sangrar una Perl deja de considerarla POD, la analiza como código y falla con un error de sintaxis. Esto incluye los heredoc `<<~`, en los que Perl quita el espacio inicial común: el sangrado relativo de las líneas del cuerpo es el significado, así que mover una sola línea cambia el resultado.
¿Por qué mi código salió igual que entró?
Normalmente significa que ya estaba bien, que es el mejor resultado posible. El peor fallo de un formateador no es una salida fea, sino alterar código correcto: ese cambio acaba en un diff y en una revisión, y es difícil decir quién lo hizo. Por eso la estrategia aquí es actuar solo cuando hay algo que arreglar. Cuando el código está de verdad mal sangrado, la salida cambia.
¿Va a cambiar lo que hace mi código?
No. Solo se toca el espacio en blanco al principio de cada línea: ni un carácter del interior, ni reordenación, ni reajuste de ancho, ni borrado de líneas, nada dentro de cadenas ni comentarios, y el cuerpo de los heredoc y el POD se conservan enteros. Así que incluso con un formato muy raro, lo peor es un sangrado que no te guste, mientras el código sigue corriendo. Por lo mismo, no puede añadir sintaxis que falte (una llave perdida, un punto y coma olvidado). Es una herramienta de sangrado, no de reparación.

Herramientas relacionadas