Vedere perldoc -f map
. map
ha due forme: map({block} @array)
e map(expression, @array)
. Quest'ultima forma può essere utilizzato in questo modo:
perl -le 'print map(("a".."z")[rand 26], 1..5)'
perl -le 'print map +("a".."z")[rand 26], 1..5'
La ragione
perl -le 'print map ("a".."z")[rand 26], 1..5'
non funziona è perché analizza come
perl -le 'print(((map("a".."z"))[rand(26)]), 1..5)'
In altre parole, diventano "a".."z"
gli unici argomenti di map
, che non è valido. Questo può essere disambiguato con un set aggiuntivo di parentesi o con un unario +
.
Che cosa è esattamente il codice che non ha funzionato? Può essere fatto senza '{}'. – aschepler
@aschepler: Sì, ma se hai rimosso le parentesi graffe, devi aggiungere una virgola tra il blocco e l'elenco. –