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

use vars / our



<< >> 10 Einträge, 1 Seite
ppm1
 2004-05-10 00:31
#82172 #82172
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
Hallo

Kann mir einer den Unterschied zwischen

use vars()

und

our


erklären?

Was ist schneller, was belastet weniger, nimmt weniger Speicher weg usw.?
Ab welcher Version von Perl geht was davon?

usw?


Danke.
Gast Gast
 2004-05-10 00:55
#82173 #82173
our()
ersetzt 'use vars' und ist ab v5.6 gültig.

our()
ist genau das was viele Leute unter local() verstehen was local() aber nicht ist ;)
lichtkind
 2004-05-10 12:45
#82174 #82174
User since
2004-03-22
5681 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
du kannst variablen ohne präfix also global (überall bekannt) definieren
local (nur in diesem block bekannt und im code der von da aufgerufen wird)
my (nur in diesem block)
und our (im ganzen übergeordneten block bekannt)

{ das ist ein block }\n\n

<!--EDIT|lichtkind|1084195814-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
Gast Gast
 2004-05-10 15:22
#82175 #82175
neee ... ;)
local($var) speichert lediglich den vor Eintritt in den Block bekannten Wert der Varibalen $var und stellt diesen Wert nach dem Verlassen des Blocks wieder her (wichtig bei der Verwendung von z.B. $_ über mehrere Subs).
our($var) deklariert $var (beinahe - kommt drauf an an welcher Stelle des Scripts 'our($var)' eingefügt ist) als globale Variabale.
ppm1
 2004-05-10 20:51
#82176 #82176
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
Also kann ich wenn ich bisher use vars(...) am Anfang meines Skriptes habe, dies jetzt durch our(...) ersetzen und das gleiche Ergebnis haben oder?



Ist our denn schneller oder braucht weniger Speicher oder was auch immer?
Gast Gast
 2004-05-10 21:42
#82177 #82177
Ja - das kannste so machen (jedenfalls wenn Du sicher bist das Dein Program niemals unter Perl 5.5.x laufen wird)
Ob our() schneller ist als use vars() oder weniger Speicher verbraucht, das kann ich nicht sagen - auf alle Fälle ist es sauberer.
sri
 2004-05-10 22:40
#82178 #82178
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Dieter,10.05.2004, 19:42]Ja - das kannste so machen (jedenfalls wenn Du sicher bist das Dein Program niemals unter Perl 5.5.x laufen wird)
Ob our() schneller ist als use vars() oder weniger Speicher verbraucht, das kann ich nicht sagen - auf alle Fälle ist es sauberer.[/quote]
our ist schneller, schau dir einfach vars.pm an, dann sollte alles klar sein. ;)
ptk
 2004-05-10 23:20
#82179 #82179
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ich glaube, es gibt sinnvollere Stellen, an denen man auf Performance optimieren kann...
sri
 2004-05-11 01:43
#82180 #82180
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=ptk,10.05.2004, 21:20]Ich glaube, es gibt sinnvollere Stellen, an denen man auf Performance optimieren kann...[/quote]
Natürlich, aber er hat gefragt ;)
Strat
 2004-05-11 03:19
#82181 #82181
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich mag use vars qw(...) irgendwie lieber, weil ich globale variablen gerne am scriptanfang deklariere, und das our verfuehrt mich immer dazu, da einfach mal anstelle von my ein our zu schreiben, wodurch ich eventuell eine oft sehr verdeckte schnittstelle in eine funktion oder so bekomme, die man dann leicht vergisst... und dass es mit alten perl's laeuft, finde ich auch nicht schlecht. aber das ist wohl wirklich geschmackssache...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 10 Einträge, 1 Seite



View all threads created 2004-05-10 00:31.