{{backlinks>.}}
===== Input / Output =====
==== Lesen von STDIN ====
* gets # Liest eine ganze Zeile also String ein, inklusive "\n"
* STDIN.readlines # Liest alles in ein Array von Zeilen, inklusive "\n"
==== Ausgabe auf STDOUT ====
* puts # Ausgabe mit einem "\n" am Ende, wenn nicht schon eines darin ist.
* print # Augabe ohne zusätzliches "\n" am Ende
==== Kommandozeilenargumente ====
* ARGV ist ein Array mit den Kommandozeilenargumenten
p ARGV
> ruby argv.rb hello 1 2
["hello", "1", "2"]
>
==== Lesen / Schreiben in Dateien ====
Billige und flexible Variante: Redirection auf der Kommandozeile
# Inhalt von inputDaten.txt wird STDIN:
ruby meinprogramm.rb < inputDaten.txt
# STDOUT wird in outputDaten.txt geschrieben
ruby meinprogramm.rb > outputDaten.txt
# Kombiniert
ruby meinprogramm.rb < inputDaten.txt > outputDaten.txt
# Es ist sogar möglich, den Output eines Programms als Input des nächsten zu verwenden
ruby datenmais.rb | ruby maisfresser.rb
Öffnen einer Datei
daten = File.new("inputDaten.txt", "r") # Zum Lesen öffnen (read)
ersteZeile = daten.gets.chomp # Erste Zeile als String, "\n" entfernt
rest = daten.readlines.map{|l| l.chomp} # Rest in Array, "\n" entfernt
daten.close # Datei wieder schliessen
# Alternative (schliessen automatisch)
ersteZeile="" # Sonst lebt die Variable nur im Block und danach nicht mehr.
rest = []
File.new("inputDaten.txt", "r") {|daten|
ersteZeile = daten.gets.chomp # Erste Zeile als String, "\n" entfernt
rest = daten.readlines.map{|l| l.chomp} # Rest in Array, "\n" entfernt
} # Datei automatisch geschlossen.
# Ausgabe:
File.new("outputDaten.txt", "w") {|daten| # Ausgabe (write)
daten.puts ersteZeile
daten.puts rest
} # Datei automatisch geschlossen.