Frage zur Syntax
am 11.07.2006 13:03:57 von Mike Wesling
Hallo,
habe eine Frage bezüglich der Syntax in Perl (bzw. Tk).
Ich habe in verschiedenen Tutorials unterschiedliche Schreibweisen zur
Erstellung eines Buttons gesehen und mich würde mal interessieren, wann
man welche nimmt:
$main->Button("-text" => "OK");
$main->Button(-text => "OK");
$main->Button(-text => 'OK');
$main->Button('-text' => 'OK');
Wann muss ich denn die Optionen überhaupt in '' oder "" setzen, wann
macht das Sinn, denn ob ich ein '' setze oder nicht, spielt bei mir
keine Rolle!?
Gibt es einen Unterschied zwischen '' und "", denn normalerweise kenn
ich das bei einem Button-Text nur mir "", aber wie gesagt in einem
Tutorial auch schon '' gesehen?
Re: Frage zur Syntax
am 11.07.2006 16:08:29 von Frank Wiegand
Mike Wesling schrieb:
> habe eine Frage bezüglich der Syntax in Perl (bzw. Tk).
Perl.
> $main->Button("-text" => "OK"); $main->Button(-text => "OK");
> $main->Button(-text => 'OK'); $main->Button('-text' => 'OK');
>
> Wann muss ich denn die Optionen überhaupt in '' oder "" setzen, wann macht
> das Sinn, denn ob ich ein '' setze oder nicht, spielt bei mir keine Rolle!?
Wenn =>, dann sollte die linke Seite ohne Quotes geschrieben werden, es sei
denn, es geht nicht anders.
perldoc perlop sagt:
The "=>" operator is a synonym for the comma, but forces any word (consisting
entirely of word characters) to its left to be interpreted as a string (as of
5.001). If the argument on the left is not a word, it is first interpreted
as an expression, and then the string value of that is used.
The "=>" operator is helpful in documenting the correspondence between keys
and values in hashes, and other paired elements in lists.
(wobei das mit dem "word character" noch näher zu beleuchten wäre ...)
In der Sektion "Symbolic Unary Operators" findest du noch Infos zum "-" vor
dem Wort.
> Gibt es einen Unterschied zwischen '' und "", denn normalerweise kenn ich das
> bei einem Button-Text nur mir "", aber wie gesagt in einem Tutorial auch
> schon '' gesehen?
Bitte die Sektion "Quote and Quote-like Operators" in perldoc perlop lesen.
Frank
Re: Frage zur Syntax
am 12.07.2006 15:07:20 von Torsten Mohr
Hallo,
> Wenn =>, dann sollte die linke Seite ohne Quotes geschrieben werden, es
> sei denn, es geht nicht anders.
>
> perldoc perlop sagt:
>
> The "=>" operator is a synonym for the comma, but forces any word
> (consisting entirely of word characters) to its left to be interpreted as
> a string (as of
> 5.001). If the argument on the left is not a word, it is first
> interpreted as an expression, and then the string value of that is used.
>
> The "=>" operator is helpful in documenting the correspondence between
> keys and values in hashes, and other paired elements in lists.
>
> (wobei das mit dem "word character" noch näher zu beleuchten wäre ...)
danke für die Erklärung. In dem folgenden Hash:
%H = ( 0x0c => 'zwölf', 12 => 'twelve', 014 => 'douce' );
foreach $k (keys %H) {
print "$k $H{$k}\n";
}
Führt zur Ausgabe:
12 douce
Anscheinend werden die Keys nicht als String interpretiert, wobei ich die
einzelnen Zeichen schon als "word characters" bezeichnet hätte.
Oder kann man daraus schlieÃen daà sich "word characters" auch auf die
Position im String bezieht? Also daà der String mit einem Buchstaben oder
_ anfangen muÃ?
GrüÃe,
Torsten.
Re: Frage zur Syntax
am 12.07.2006 17:34:35 von Ingo Menger
Torsten Mohr wrote:
> Hallo,
>
> > Wenn =3D>, dann sollte die linke Seite ohne Quotes geschrieben werden, =
es
> > sei denn, es geht nicht anders.
> >
> > perldoc perlop sagt:
> >
> > The "=3D>" operator is a synonym for the comma, but forces any word
> > (consisting entirely of word characters) to its left to be interpreted =
as
> > a string (as of
> > 5.001). If the argument on the left is not a word, it is first
> > interpreted as an expression, and then the string value of that is used.
> >
> > The "=3D>" operator is helpful in documenting the correspondence between
> > keys and values in hashes, and other paired elements in lists.
> >
> > (wobei das mit dem "word character" noch näher zu beleuchten wäre .=
..)
>
> danke für die Erklärung. In dem folgenden Hash:
>
> %H =3D ( 0x0c =3D> 'zwölf', 12 =3D> 'twelve', 014 =3D> 'douce' );
>
> foreach $k (keys %H) {
> print "$k $H{$k}\n";
> }
>
> Führt zur Ausgabe:
> 12 douce
>
> Anscheinend werden die Keys nicht als String interpretiert, wobei ich die
> einzelnen Zeichen schon als "word characters" bezeichnet hätte.
Was ein Wort ist, ist Definitionssache. Offenbar ist es so, daß ein
Token, das mit einer Ziffer anfängt, nicht als Wort gilt.