Questo codice sta cercando di leggere ogni oggetto in un elemento di un array, quindi è necessario dire dove uno finisce e il prossimo inizia. La riga $/="\n\n"
sta impostando ciò che Ruby usa per dividere il tuo file in.
$/
è noto come "separatore di record di input" ed è il valore utilizzato per suddividere il file durante la lettura. Per impostazione predefinita, questo valore è impostato su nuova riga, quindi quando si legge in un file, ogni la linea sarà messa in un array. Che impostazione di questo valore, stai dicendo rubino che una nuova linea non è la fine di una pausa, invece usa la stringa data.
Per esempio, se ho un file separato da virgole, posso scrivere $\=","
poi se faccio qualcosa come il tuo codice su un file in questo modo:
foo, bar, magic, space
vorrei creare direttamente un array, senza dover diviso ancora una volta:
["foo", " bar", " magic", " space"]
Quindi la vostra linea cercherà due nuova linea, e divisa su ciascun gruppo invece che su ogni linea. Riceverai solo 2 nuove righe di fila quando una riga è vuota. Quindi questa riga dice ruby, quando si leggono i file, si rompono su linee vuote invece di ogni riga.
Questo è brutto codice btw. Passare a ['IO.foreach'] (http://ruby-doc.org/core/IO.html#method-c-foreach) sarebbe un notevole miglioramento:' File.foreach ("/ home/alan/tmp/blah.yaml "," \ n \ n ") do | oggetto |'. Questo non usa (oscure) variabili globali e chiude anche il file. – cremno
Questo non è un duplicato di [exemplar nominato] (http: // stackoverflow.it/questions/1042384/how-do-you-use-global-variables-or-constant-values-in-ruby): Quella domanda riguarda come usare le variabili globali in Ruby, ma questa domanda riguarda il significato di specifica variabile globale predefinita. –