[ruby-it] File.basename("xxx", "x*x") l'asterisco funziona?
Pietro Giorgianni
giorgian a gmail.com
Sab 27 Mar 2010 12:29:51 CET
Il 27 marzo 2010 11.44, Antonio Flamini <iusimi a libero.it> ha scritto:
> Immagino che per 'elenco' tu intenda un file contenente la lista dei
> file di backup, però non è cosi: il file che devo leggere contiene il
> percorso della cartella contenente gli stessi file di backup.
E invece no, per elenco intendevo la lista dei *path* di file db, e
quindi *è così*: semplicemente la tua è una lista con un solo
elemento, non cambia assolutamente nulla.
> Comunque ho provato le linee che mi hai scritto (due giorni!), però mi
> da un errore di compilazione proprio su gsub;
Che errore ti dà?
> da quello che ho letto il pattern andrebbe
> racchiuso tra "()" e "[]", questo è quello che ne è venuto fuori:
Assolutamente no!
> path_file="/home/user/dar_file/file_backup.txt"
> var_path=File.read path_file => /media/disk/
> darfile_list=Dir.glob("#{var_path}*.dar") => ["data.1.dar", data.2.dar",
> etc]
> darfile_list.each do |y| File.basename(y).gsub(/[\(.\d+)?\.dar$]/, "")
> L'ultima riga, gsub, ora non
> mi da nessun errore però mi restituisce i file di backup non solo con
> l'estensione ma anche con il percorso
Attenzione, l'ultima riga non fa assolutamente niente, giusta o
sbagliata che sia la regexp.
Infatti, lista.each &blocco applica il blocco a ogni elemento,
buttando via il risultato.
Quindi hai due possibilità:
1) usare lista.each {|x| x.gsub! ... } (infatti gsub! modifica
l'oggetto, a differenza di gsub);
2) usare lista = lista.map {|x| x.gsub ... }
Pietro
More information about the Ml
mailing list