Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5802[/thread]

strict und my (Seite 2)

Leser: 1


<< |< 1 2 3 4 5 6 >| >> 53 Einträge, 6 Seiten
Dubu
 2003-10-06 03:42
#61246 #61246
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@strat:
[quote=Private Variables via my(),perlsub]       NOTE: The behaviour of a "my" statement modified with a statement modifier conditional or
      loop construct (e.g. "my $x if ...") is undefined.  The value of the "my" variable may be
      "undef", any previously assigned value, or possibly anything else.  Don't rely on it.
      Future versions of perl might do something different from the version of perl you try it out
      on.  Here be dragons.
[/quote]
Dubu
 2003-10-06 03:56
#61247 #61247
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=jan10001,05.10.2003, 20:20]Hm, ich dachte da gäbe noch eine andere Möglichkeit. Es stört mich, die Variable erst vordefinieren zu müssen, wenn man mal in den Klammern ne globale Varaible erzeugen möchte.[/quote]
Es gibt kaum etwas schlimmeres, als eine globale Variable "irgendwo" erzeugen zu koennen! Das ist es ja gerade, was man mit dem Zwang zur Deklaration verhindern moechte.

Wenn du globale Variablen brauchst, deklarier sie am Anfang deines Programms (und gibt ihnen am besten eine eindeutige Schreibweise, z.B. grosse Anfangsbuchstaben), sodass fuer dich noch nach Wochen oder Jahren auf einen Blick ersichtlich ist, welche Variablen einen "unbegrenzten" Scope haben.

Ansonsten wuerdest du irgendwann doch "mal eben" eine weitere kleine, globale Variable irgendwo im Code anlegen, die dummerweise zufaellig den gleichen Namen bekommt wie die erste - und dann geht die Fehlersuche los...

Ach ja, noch eines: Oft glaubt man, hier und da globale Variablen zu benoetigen, um globale Optionen, Einstellungen oder aehnliches durch das Programm zu schleifen. Dann kann ein einzelner globaler Hash die Loesung sein, in dem alle Optionen gespeichert werden...
betterworld
 2003-10-06 04:28
#61248 #61248
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Wobei allerdings bei einem Hash die Gefahr groesser denn je ist, dass man sich vertippt. Denn ob das Element auch existiert, wird zur Kompilierzeit nicht ueberpruft (kann gar nicht), im Gegensatz zu my-Variablen. Bei der Schreibweise $blah::blubb hat man immerhin ein warning, wenn es nur einmal verwendet wird.

Ich benutze allerdings auch oft Hashes fuer solche `globalen' Optionen. Ist uebersichtlicher.\n\n

<!--EDIT|betterworld|1065400255-->
format_c
 2003-10-06 10:52
#61249 #61249
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=jan10001,05.10.2003, 20:32]In dem Fall wäre sie global, da sie duch keine weiteren Klammern begrenzt wird. Zum Exporter werde ich erstmal googlen gehn.[/quote]
Ist sie nicht. Sie ist jetzt nämlich nur in der Datei bekannt in der Sie deklariert wurde. Also Global kann man sie sehen, wenn Sie in deiner ganzen Datei als auch in allen anderen mit use und require eingebunden Dateien unter diesem Namen bekannt wäre.

Gruß Alex
kabel
 2003-10-06 11:18
#61250 #61250
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
[quote=betterworld,06.10.2003, 02:28]Wobei allerdings bei einem Hash die Gefahr groesser denn je ist, dass man sich vertippt.[/quote]
nö ...

Quote
[...]

lock_keys(%hash);
lock_keys(%hash, @keys);

Restricts the given %hash's set of keys to @keys. If @keys is not given it restricts it to its current keyset. No more keys can be added. delete() and exists() will still work, but will not alter the set of allowed keys. [...]

CPAN:aus dem Hash::Util POD

das ist ein neues feature in 5.8.0
-- stefan
jan10001
 2003-10-06 13:24
#61251 #61251
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
@Dubu
Quote
Es gibt kaum etwas schlimmeres, als eine globale Variable "irgendwo" erzeugen zu koennen! Das ist es ja gerade, was man mit dem Zwang zur Deklaration verhindern moechte.
Das bestreitet keiner und ist ja auch gut so.

Quote
Wenn du globale Variablen brauchst, deklarier sie am Anfang deines Programms (und gibt ihnen am besten eine eindeutige Schreibweise, z.B. grosse Anfangsbuchstaben), sodass fuer dich noch nach Wochen oder Jahren auf einen Blick ersichtlich ist, welche Variablen einen "unbegrenzten" Scope haben.
Genau das ist es was mich stört, ne globale Variable zu deklarieren die eventuell nicht gebraucht wird.


@format_c
Quote
Ist sie nicht. Sie ist jetzt nämlich nur in der Datei bekannt in der Sie deklariert wurde. Also Global kann man sie sehen, wenn Sie in deiner ganzen Datei als auch in allen anderen mit use und require eingebunden Dateien unter diesem Namen bekannt wäre.
Richtig. :)
esskar
 2003-10-06 15:22
#61252 #61252
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
tja...
entweder du weißt, ob du eine variable global brauchst, oder du brauchst sie eben nicht global...
das sollte man als programmieren wissen!!!
jan10001
 2003-10-06 15:35
#61253 #61253
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Quote
tja...
entweder du weißt, ob du eine variable global brauchst, oder du brauchst sie eben nicht global...
das sollte man als programmieren wissen!!!
Richtig. Aber das entscheidet sich erst zur Laufzeit des Programms.
Strat
 2003-10-06 16:20
#61254 #61254
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Dubu,06.10.2003, 01:42]@strat:
[quote=Private Variables via my(),perlsub]       NOTE: The behaviour of a "my" statement modified with a statement modifier conditional or
      loop construct (e.g. "my $x if ...") is undefined.  The value of the "my" variable may be
      "undef", any previously assigned value, or possibly anything else.  Don't rely on it.
      Future versions of perl might do something different from the version of perl you try it out
      on.  Here be dragons.
[/quote][/quote]
was ich auch seltsam finde ist, dass z.B.
print $var for my $var (1..10);
nicht funktioniert...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
esskar
 2003-10-06 16:22
#61255 #61255
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
sowas kann nicht sein...
die variable sollte immer da sein...
alles andere ist quatsch... und funzt in "richtigen" Programmiersprachen nicht...
das es in Scriptsprachen funzt find ich ziemlich schlecht...
<< |< 1 2 3 4 5 6 >| >> 53 Einträge, 6 Seiten



View all threads created 2003-10-05 22:02.