Schrift
[thread]9997[/thread]

local mit use strict;

Leser: 1


<< >> 9 Einträge, 1 Seite
bieber
 2007-08-08 10:13
#97751 #97751
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
morgen,

seit dem registrieren hier im Forum nutze ich jetz immer
Code (perl): (dl )
1
2
use strict;
use warnings;


bisher keine Probleme, nun habe ich ein Array was ich über local initialisieren will
Code (perl): (dl )
local @array;


ohne use strict funktioniert es auch ohne Probleme, das array ist in jeder Unterfunktion direkt ansprechbar

aber bei use strict wird mir dies ausgegeben:
Code: (dl )
Global symbol &quot;@datei&quot; requires explicit package name at xx.pl line 48.


also hab ich mir mal auf cpan durchgelesen was dazu steht, leider kapiere ich es nicht wirklich
Code: (dl )
The local() generated a compile-time error because you just touched a global name without fully qualifying it



kann mir da jm. auf die Sprünge helfen?!
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
ptk
 2007-08-08 10:45
#97755 #97755
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Entweder du benutzt die Variable immer mit Packagenamen, also
Code: (dl )
local @bla::datei;
oder du deklarierst die Variable mit our.
bieber
 2007-08-08 10:52
#97757 #97757
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
our funktioniert, danke ;)

jedesmal das package anzugeben wäre mir ehrlich gesagt zu doof, das ist ja eigentlich nicht der Sinn von local (dachte ich^^)
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
ptk
 2007-08-08 11:15
#97758 #97758
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Der Sinn von local ist es, dass der alte Wert der Variablen gespeichert und nach Verlassen des Blocks wieder hergestellt wird. Ich benutze local eigentlich nur für die speziellen globalen Variablen wie $/ und so. Ansonsten möchte man fast immer nur mit my arbeiten.
betterworld
 2007-08-08 13:01
#97766 #97766
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
bieber, wozu brauchst Du denn local?
bieber
 2007-08-08 13:26
#97767 #97767
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
mit our funktionierts genauso,

ich brauch das array halt auch in Unterfunktionen, ob das nun global ist mit our oder nur für Unterfunktionen mit local ist meinem Script völlig egal

hier mal der Ablauf dazu:
1. laden einer datei ins array
2. Auswahlmöglichkeit verschiedener Funktionen die mit diesen array arbeiten sollen
3. Nutzung des array´s in den jeweiligen Funktionen

und ich habe lieber ein globales array als zig mal den pointer auf das array an die Funktionen mit zu übergeben ;), nennt es Faulheit wenn ihr wollt^^

oder überzeugt mich das sowas dämlich ist ;)
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
pq
 2007-08-08 13:39
#97768 #97768
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
bieber+2007-08-08 11:26:14--
und ich habe lieber ein globales array als zig mal den pointer auf das array an die Funktionen mit zu übergeben ;), nennt es Faulheit wenn ihr wollt^^

vieles ist auf den ersten blick schwieriger, spart dir aber letztendlich zeit, die du
später fürs debuggen brauchst.

http://perl.plover.com/FAQs/Namespaces.html

es ist gut, faul zu sein als programmierer, aber auf eine intelligente art, also
so, dass du langfristig arbeit sparst.

glaub mir, es ist wirklich kein spass, sich mit einem programm beschaeftigen zu
müssen, dass hunderte globale variablen hat, nur weil die programmierer
damals, als sie es geschrieben haben, dachten, es sei das einfachste.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bieber
 2007-08-08 14:49
#97776 #97776
User since
2007-06-18
148 Artikel
BenutzerIn
[default_avatar]
guter Artikel, am besten finde ich diesen Satz:

Code: (dl )
1
2
3
4
5
When to Use my and When to Use local

Always use my; never use local.

Wasn't that easy?


danke für die Hinweise, bin aber der einzigste der an diesem Projekt sitzt, insofern kann ich mich nur selbst reinlegen mit meiner eigenen Faulheit^^
Es gibt immer Leute die meinen, sie seien schlauer als ich. Das Schlimmste ist, sie sind es auch.
Daxim
 2007-08-10 19:10
#97918 #97918
User since
2007-08-01
114 Artikel
BenutzerIn
[Homepage]
user image
TIMTOWDTI: Wenn man OO programmiert, kann man seine globalen Konstanten und veränderlichen Werte in z.B. den geblessten Hash in new() reinkloppen.

Das ist saubererer Stil als our oder local, weil es nicht action at a distance auslösen kann.
<< >> 9 Einträge, 1 Seite



View all threads created 2007-08-08 10:13.