{{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.