enric73 escribiste:unas preguntas... sobre el código en
-my @indices = @{$tabla->all()}; # Índices de las filas podría utilizar también $table->fieldlist_all()?
No. all() devuelve los índices para acceder a las
filas, mientras que fieldlist_all devuelve los nombres de las
columnas.
enric73 escribiste:--my $ancho_maximo = 0; # Calcularemos el ancho más grande, ¿partimos del valor 0?
Sí.
enric73 escribiste:--= sprintf "%*s", $ancho_maximo, $filas->[$j] // ''; Esta linea del formato exactamente ¿qué hace?
$filas->[$j] nos devuelve el valor $j-ésimo de la fila $filas.
sprintf() nos formatea ese valor según lo que dice la cadena de formato "%*s".
La cadena de formato quiere decir: «coge el siguiente argumento de los que se han pasado a sprintf() y ponlo en lugar del '*'. Como ese argumento es $ancho_maximo, lo que estamos haciendo es definiendo el ancho de una cadena de texto. Ejemplo: si ese ancho es 6, la cadena de formato queda "%6s" que quiere decir que en la salida sprintf() debe generar una cadena de caracteres de 6 posiciones, y meter dentro de ella el siguiente argumento, que es el valor de la fila. De esta manera, el valor queda "metido" dentro de un espacio más grande, y ajustado a la derecha. O sea, como queremos que quede.
enric73 escribiste:-Otra consulta, me he dado cuenta que algunas cifras solamente tienen un decimal o cero, y quiero tenerlos todos con dos decimales, ¿puedo utilizar $rounded = sprintf("%.2f", $number);? es decir $filas->[$j] # Modificamos la fila $j-ésima
= sprintf "%.2f", $filas->[$j] // ''?
Sí, claro. Pero debes indicar además el ancho máximo calculado antes, para que lo haga todo en un solo paso.