¿Ya dominas lo básico? Un curso estructurado de Perl es la vía rápida para dar el salto.
Ver cursos de Perl en UdemyEnlace de afiliado. No te cuesta nada extra.
- 01Preparar el entorno (lo que necesitas)
- 02Tu primera salida (print)
- 03Variables (variables escalares, $)
- 04Condicionales (la sentencia if)
- 05Repetir (el bucle for)
- 06Escribir una subrutina (una función)
- 07Repetir (el bucle while)
- 08Trabajar con arrays (@)
- 09Trabajar con hashes (%)
- 10Coincidencia con expresiones regulares
- 11Sustitución con expresiones regulares (s///)
- 12Trabajar con texto
- 13Referencias
- 14Subrutinas anónimas
- 15Entrada y salida de archivos, lo básico
- 16Módulos y use strict / warnings
- 17El operador ternario
- 18Ordenar (sort)
- 19Paquetes y lo básico de la orientación a objetos
- 20[Proyecto] Construye un mini sistema de inventario
Trabajar con texto
En esta lección medirás un texto y extraerás una parte de él.
length() devuelve el tamaño y substr($texto, 0, 5) extrae cinco unidades a partir de la posición 0. Fíjate en que print admite varios argumentos separados por comas y los imprime uno detrás de otro.
El código de ejemplo muestra el tamaño del texto y su comienzo.
Y aquí aparece la trampa más importante de Perl con el español. Sin más preparación, Perl trata el texto como una secuencia de bytes, no de caracteres. El signo ¡ ocupa dos bytes en UTF-8, así que el tamaño sale mayor de lo que esperas y substr corta a mitad de camino: por eso el resultado es ¡Hol, cuatro letras y no cinco. Por eso las etiquetas del ejemplo dicen «bytes» y no «caracteres».
La solución existe y es corta: añadir use utf8; arriba para que Perl entienda que el código fuente está en UTF-8, y binmode(STDOUT, ':utf8'); para que la salida también lo esté. A partir de ahí length cuenta caracteres de verdad. Es una de esas cosas que conviene saber antes de procesar textos en español, no después.
🧪 Este sitio no puede compilar ni ejecutar Perl directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).
