Ver perldoc -f map
. map
tiene dos formas: map({block} @array)
y map(expression, @array)
. Esta última forma se puede utilizar de esta manera:
perl -le 'print map(("a".."z")[rand 26], 1..5)'
perl -le 'print map +("a".."z")[rand 26], 1..5'
La razón
perl -le 'print map ("a".."z")[rand 26], 1..5'
que no funciona es porque se analiza como
perl -le 'print(((map("a".."z"))[rand(26)]), 1..5)'
En otras palabras, se convierten en "a".."z"
los únicos argumentos de map
, que no es válido. Esto se puede desambiguar con un conjunto adicional de paréntesis o con unario +
.
¿Cuál fue exactamente el código que no funcionó? Se puede hacer sin '{}'. – aschepler
@aschepler: Sí, pero si eliminas las llaves, entonces necesitas agregar una coma entre el bloque y la lista. –