Avanti
Thomas Berger
ThB at gymel.com
Do Aug 16 15:49:17 CEST 2001
Liebe Frau Koczian,
> >Was Kollege Fischer da beobachtet, ist eine Folge der Angleichung
> >von avanti und FLEX. Weil ja nun fast jeder Buchstabe eine
> >Sondervariable ist (obwohl bei avanti noch ein paar weniger),
> >muessen Textelemente immer in "..." eingeschlossen werden.
> >Auch bisher musste man da durchaus aufpassen, so dass wir
> >annehmen, dass in funktionierenden
> >Skripten normalerweise die "..." gesetzt sind. Wo nicht, muss das
> >nun nachgebessert werden.
>
> Das heisst, auch wenn man die Namen mehrerer Sondervariabler unmittelbar
> hintereinander schreibt, ohne irgendeinen Trenner, werden sie als
> Sondervariable interpretiert? Ich hoffe dringend, dass trennende
> Leerzeichen (ohne ".." drumherum) weiterhin nicht in der Ausgabe landen;
Ich glaube, es liegt hier ein Missverstaendnis vor.
Herr Fischer hatte wohl Konstruktionen wie
write Hallo newline
benutzt. Aber newline ist immer newline und nicht
n e w l i n e (also 7 Abkuerzungen fuer Sondervariable)
Spatien bleiben also wichtig, um Sondervariable
voneinander zu trennen, *Text* hingegen sollte immer
ein (einfache oder doppelten) Anfuehrugnszeichen stehen.
> und mir scheint so was doch ueblichen Programmiersprachen-Gepflogenheiten
> zu widersprechen, oder irre ich mich? Vergleichbar waeren wohl am ehesten
> die tausend unbehaltbaren Sondervariablen von Perl, kann man die ohne Punkt
> und Komma aneinanderketten?
Nein, das ist nicht vergleichbar: Perl-Variable werden
*innerhalb* von (double quoted) Strings expandiert, das
funktioniert, weil ja ein $ davorsteht.
Es funktioniert weder
print $a $b $c;
noch
print $a$b$c;
Wohl aber funktioniert:
print "$a $b $c";
print "$a$b$c";
# Beides ist *ein* String mit Expansion, Spatien
# machen Unterschied.
und
print $a, $b, $c; # Ausgabe einer dreielementigen Liste
# Komma ist Listentrennzeichen, Spatien machen keinen Unterschied
# zwischen die Listenelemente wird $, ($OFS) automatisch
# eingefuegt
und
print $a . $b . $c # Ausgabe eines aus drei Teilstrings
# zusammengesetzten Strings, Spatien machen keinen Unterschied
und
map { print } $a, $b, $c; # dreimalige Ausgabe je eines
# Teilstrings
und natuerlich noch eine Zillion abgefahrenere Moeglichkeiten,
wie etwa
print "@{[$a, $b, $c]}"; # Ausgabe eines adhoc-Arrays,
# Spatien egal, zwischen die Elemente wird $" automatisch
# eingefuegt
viele Gruesse
Thomas Berger
Mehr Informationen über die Mailingliste Allegro