Die Programmiersprache Ruby (German Edition)
dass sie eigentlich Synonyme für ihre jeweilige Version mit Ausrufezeichen sind.
Diese globalen Funktionen wurden bei Ruby 1.9 entfernt, so dass sie in neuem Code nicht mehr verwendet werden sollten.
10.3.3 Reportfunktionen
Kernel
definiert eine Reihe globaler Funktionen zum Senden von Daten an
$stdout
. (Diese globale Variable verweist zu Anfang auf den Standardausgabedatenstrom STDOUT des Ruby-Prozesses, aber Sie können ihren Wert und so das Verhalten der hier beschriebenen Funktionen ändern.)
puts
,
print
,
printf
und
putc
sind äquivalent zu den gleichnamigen Methoden von
STDOUT
(siehe „9.7.4 In einen Stream schreiben“ ). Denken Sie daran, dass
puts
einen Zeilenumbruch an seine Ausgabe anfügt, wenn noch keiner vorhanden ist.
print
dagegen hängt nicht automatisch einen Zeilenumbruch an, aber es hängt den Ausgabezeilentrenner
$\
an, wenn diese globale Variable gesetzt wurde.
Die globale Funktion
p
hat kein Gegenstück in der Klasse
IO
. Sie ist für Debugging-Zwecke gedacht, und ihr kurzer Name erleichtert das Eintippen. Sie ruft die Methode
inspect
von jedem ihrer Argumente auf und übergibt die erhaltenen Strings an
puts
. Erinnern Sie sich, dass
inspect
standardmäßig äquivalent zu
to_s
ist, dass einige Klassen die Methode jedoch neu definieren, um eine Ausgabe bereitzustellen, die für Debugging-Zwecke geeignet ist. Wenn Sie die Bibliothek
pp
importieren, können Sie auch die Funktion
pp
(»pretty print«) anstelle von
p
verwenden, um Ihre Debugging-Ausgabe besser formatiert auszugeben. (Dies ist nützlich zur Ausgabe großer Arrays und Hashes.)
Die weiter oben erwähnte Methode
printf
erwartet als erstes Argument einen Format-String und ersetzt die Platzhalter in diesem String durch die Werte ihrer restlichen Argumente, bevor sie das Ergebnis ausgibt. Sie können Daten auch in einem String formatieren, ohne das Ergebnis an
$stdout
zu senden, indem Sie die globale Funktion
sprintf
oder ihr Synonym
format
verwenden. Diese funktionieren wie der
%
-Operator von
String
.
10.3.4 Einzeilige Skriptabkürzungen
Weiter oben in diesem Kapitel haben wir die Interpreter-Option
-e
zur Ausführung einzeiliger Ruby-Skripten (oft in Verbindung mit den Schleifenoptionen
-n
und
-p
) beschrieben. Es gibt eine von Perl übernommene spezielle Arbeitserleichterung, die nur in Skripten erlaubt ist, die mit
-e
angegeben werden.
Wenn ein Skript mit
-e
angegeben wird und ein regulärer Ausdruck allein in einem Fallentscheidungsausdruck steht (als Teil einer
if
-,
unless
-,
while
- oder
until
-Anweisung oder eines entsprechenden Modifizierers), dann wird der reguläre Ausdruck implizit mit
$_
verglichen. Wenn Sie beispielsweise alle Zeilen einer Datei ausgeben möchten, die mit dem Buchstaben A beginnen, können Sie Folgendes schreiben:
ruby -n -e 'print if /^A/' datafile
Wenn dasselbe Skript in einer Datei steht und ohne die Option
-e
ausgeführt wird, funktioniert es immer noch, gibt aber eine Warnung aus (sogar ohne
-w
). Um die Warnung zu vermeiden, müssten Sie den Vergleich stattdessen explizit durchführen:
print if $_ =~ /^A/
10.4 Das Betriebssystem aufrufen
Ruby unterstützt eine Reihe globaler Funktionen zur Interaktion mit dem Betriebssystem, um Programme auszuführen, neue Prozesse zu forken, Signale zu verarbeiten und so weiter. Ruby wurde ursprünglich für Unix-artige Betriebssysteme entwickelt, und viele dieser betriebssystembezogenen Funktionen spiegeln dieses Erbe wider. Aufgrund ihrer Natur sind diese Funktionen schlechter portierbar als die meisten anderen, und einige sind auf Windows und anderen Nicht-Unix-Plattformen möglicherweise gar nicht implementiert. Die nachfolgenden Unterabschnitte beschreiben einige der am häufigsten verwendeten betriebssystemabhängigen Funktionen. Funktionen wie etwa
syscall
, die auf einer besonders niedrigen Ebene arbeiten oder besonders plattformabhängig sind, werden hier nicht behandelt.
10.4.1 Betriebssystemkommandos aufrufen
Die Methode
Kernel.`
erwartet ein einzelnes String-Argument, das ein Betriebssystem-Shell-Kommando darstellt. Sie startet eine Unter-Shell und übergibt ihr den angegebenen Text. Der Rückgabewert ist der Text, der auf die Standardausgabe geschrieben wird. Diese Methode wird typischerweise mithilfe einer speziellen Syntax aufgerufen; sie wird mit String-Literalen aufgerufen, die von Backticks umschlossen oder mit
%x
begrenzt werden (siehe „3.2.1.6 Backtick-Kommandoausführung“ ), zum Beispiel:
os = `uname` # String-Literal und
Weitere Kostenlose Bücher