De vez en cuando, alguien manda un pequeño programa para que el robot rakudo lo ejecute. Hace unos días, vimos como uno de los habituales por el canal, publicaba este ejemplo de conversión de números en decimal a números romanos:
Using perl Syntax Highlighting
sub roman {
my $pre = <v x xv xx xxv xxx xxxv>[($^n-4) / 5] // "";
$n % 5 == 4 ?? $pre.substr(0, -1) ~ "i" ~ $pre.substr(-1)
!! $pre ~ "i" x ($n % 5)
;
}
say roman($_) for 1..15;
my $pre = <v x xv xx xxv xxx xxxv>[($^n-4) / 5] // "";
$n % 5 == 4 ?? $pre.substr(0, -1) ~ "i" ~ $pre.substr(-1)
!! $pre ~ "i" x ($n % 5)
;
}
say roman($_) for 1..15;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
que, como podemos ver, sigue pareciéndose a Perl v5, pero ya vemos los nuevos operadores en acción.
Las principales diferencias que tenemos ahí, con respecto a Perl v5, son:
* '<', '>' para delimitar palabras, lo que hacíamos con qw()
* El operador '//', ya presente en Perl v5.10
* El operador ternario '?? !!', que sustituye al conocido '? :'
* El operador de concatenación de strings, pasa de '.' a '~'
* El método substr(), aplicado a una variable escalar
* La variable $^n, que guarda el valor del primer argumento pasado a la función, además de declarar la variable local $n (todo en uno )