[ruby-it] File.basename("xxx", "x*x") l'asterisco funziona?

Pietro Giorgianni giorgian a gmail.com
Sab 27 Mar 2010 15:06:02 CET


Il 27 marzo 2010 14.48, Antonio Flamini <iusimi a libero.it> ha scritto:
> nomi = File.open('path_file') {|f| f.readlines}.map {|x|
> Dir.glob("#{x.strip}/*.dar").map {|y| File.basename(y).gsub
> /\(.\d+)?\.dar$/, '' }.uniq }.flatten
>
> SyntaxError: compile error
> (irb):10: unmatched ): /\(.\d+)?\.dar$/
> (irb):10: syntax error, unexpected ',', expecting '}'
> /\(.\d+)?\.dar$/, '' }.uniq }.flatten
>                 ^
>  from (irb):10
>  from :0

Ops! Hai ragione, ho sbagliato qualcosa nel ricopiare: l'espressione
giusta è /(\.\d+)?\.dar$/, non /\(.\d+)?\.dar$/ ; in pratica ho
invertito "(" e "\".

> Lo so che gsub! cambia definitivamente il risultato però irb dovrebbe
> restituirmi tutto.

No. Irb mostra il valore dell'espressione; nel caso di array.each
&block, il valore è l'array finale:

>> [1, 2, 3].each {|x| 'ciao'}
=> [1, 2, 3]


> Uno cosa non ho capito, gli apici '' }.uniq sono apici singoli che
> segnano un posto vuoto per sostituire .n.dar o sono " (virgolette)? io
> le ho sostituite con i 2 apici singoli perché non ho visto l'altro paio,
> per fare la coppia.

Sì, infatti sono due apici, cioè stringa vuota; non l'ho specificato
perché davo per scontato che avresti fatto copia e incolla.



pietro


More information about the Ml mailing list