Variblen-Variable
Maik
- perl
Hallo Forum,
ohne "use strict" gibt folgendes...
$a = "Hallo";
$$a = "Welt";
print $Welt;
...den Text "Hallo Welt" aus.
Benutze ich das Modul "strict", so erhalte ich einen Fehler.
Wie kann man das mit "strict" umsetzen?
Danke schonmal.
hi,
ohne "use strict" gibt folgendes...
$a = "Hallo";
$$a = "Welt";print $Welt;
...den Text "Hallo Welt" aus.
Nana, soooo gibt datScript gar nichts aus ;-)
Benutze ich das Modul "strict", so erhalte ich einen Fehler.
Wie kann man das mit "strict" umsetzen?
use vars qw(foo bar);
Rolf ;-)
Danke schonmal.
$a = "Hallo";
$$a = "Welt";
print $Welt;
...den Text "Hallo Welt" aus.
Nana, soooo gibt datScript gar nichts aus ;-)
oh ja entschuldigung ..das sollte heissen:
print "$a $Hallo";
...das gibt dann "Hallo Welt" aus *g*
use vars qw(foo bar);
Da steig ich jetzt nicht ganz hinter ... :(
hi Maik,
$a = "Hallo";
$$a = "Welt";print $Welt;
...den Text "Hallo Welt" aus.
Nana, soooo gibt datScript gar nichts aus ;-)
oh ja entschuldigung ..das sollte heissen:
print "$a $Hallo";
...das gibt dann "Hallo Welt" aus *g*
use vars qw(foo bar);
Da steig ich jetzt nicht ganz hinter ... :(
sorry, war ja auch mein Fehler. soll heißen
use vars qw($string %hash @array);
It means: strict() meckert immer dann wenn Variablen nicht deklariert sind.
Also deklariere!
use strict;
use vars qw(...);
was auch geht:
my $string;
my $string = 'irgendwas'; # Vorbelegung irgendwas
Zu Deiner Geschichte:
mit $$foo wird ein scalar dereferenziert. Dh. du hast eine Referenz auf ein scalar.
Schau mal:
use strict;
my $string = 'irgendwas';
my $ref = $string; # der backslash macht die Referenz
my $result = $$ref; # dereferenzieren
print $result; # irgendwas
In der Hoffnung, dass alle Klarheiten beseitigt sind ;-)
Rolf
such mal auf i-netlab nach dem PERL Tut. von Eike Grote
Schau mal:
use strict;
my $string = 'irgendwas';
my $ref = $string; # der backslash macht die Referenz
my $result = $$ref; # dereferenzierenprint $result; # irgendwas
Naja, mir geht es eher darum einen Skalar "dynamisch" zu erzeugen.
Quasi hab ich einen Skalar $a mit dem Wert "Hallo"... geb ich den aus, so steht da "Hallo".
So, nun will ich quasi einen Skalar erzeugen, dessen Namen der Wert von $a ist, also soll es dann einen Skalar $Hallo geben, dem ich dann z.B. den Wert "Welt" zu weisen kann.
Hoffe man versteh mich :)
Rolf
Maik
hi
Quasi hab ich einen Skalar $a mit dem Wert "Hallo"... geb ich den aus, so steht da "Hallo".
ouh! $a ist eine reservierte Variable, Finger wech!
Aber den Rest wirst du sicher zusammenkriegen mit dem Grote-Tutorial...
Rolf
Schau mal:
use strict;
my $string = 'irgendwas';
my $ref = $string; # der backslash macht die Referenz
my $result = $$ref; # dereferenzierenprint $result; # irgendwas
Naja, mir geht es eher darum einen Skalar "dynamisch" zu erzeugen.
Quasi hab ich einen Skalar $a mit dem Wert "Hallo"... geb ich den aus, so steht da "Hallo".
So, nun will ich quasi einen Skalar erzeugen, dessen Namen der Wert von $a ist, also soll es dann einen Skalar $Hallo geben, dem ich dann z.B. den Wert "Welt" zu weisen kann.
Du bist sicher, dass du das so machen musst?
Für sowas bieten sich in aller Regel Hashes an, das ist wesentlich sicherer und vermutlich auch effizienter, als mit Referenzen auf referenzen zu arbeiten.
Also:
my %ref = ( hallo => 'Hallo' );
my $var = 'hallo';
print $ref{$var};
Struppi.