Lösungen zu ausgewählten Aufgaben
Lösung zu Aufgabe 55 (Autograph)
Eingesendet von Franz Fritsche
$a = 'print "\$a = \x27$a\x27;\n$a";';
print "\$a = \x27$a\x27;\n$a";
|
Erklärung zur Lösung
Wir gehen aus von dem Zweizeiler:
$a = 'bla bla';
print "\$a = \x27$a\x27;\n$a";
Erklärung der zweiten Zeile:
- Das "\" vor "$a" bewirkt, dass "$a"
ausgedruckt wird. D.h. "$a" wird nun NICHT als
Variable aufgefasst (und daher substituiert), sondern als auszudruckender
Text.
- "\x27" druckt das Zeichen " ' ", also den
einfachen "Anführungsstrich". Und "\n" gibt
bekanntlich einen "Zeilenvorschub" aus.
Es wird dann ausgedruckt:
$a = 'bla bla';
bla bla
Das dürfte so weit klar sein... Wichtig dabei ist NUR, dass die Form
der Ausgabe unabhängig ist von dem konkreten Text (-hier-) "bla
bla", der der Variablen $a zugewiesen wird im Source-Code!
Nun ersetze ich ganz einfach den Text
bla bla
der $a in der ersten Zeile des Programms zugewiesen wird, durch den
Text der zweiten Zeile:
print "\$a = \x27$a\x27;\n$a";
Damit erhalten wir dann folgendes Programm:
$a = 'print "\$a = \x27$a\x27;\n$a";';
print "\$a = \x27$a\x27;\n$a";
Ausgedruckt wird nun:
$a = 'print "\$a = \x27$a\x27;\n$a";';
print "\$a = \x27$a\x27;\n$a";
Das war's auch schon!
|