Thread Neu in der Perl Welt und ein paar Fragen.. (20 answers)
Opened by Ratte at 2013-07-23 19:23

pq
 2013-07-23 20:15
#169062 #169062
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
2013-07-23T17:23:37 Ratte
Frage nr1.
"my".. wozu brauch man "my" außerhalb von sub´s,schleifen etc. Ich habe das so verstanden das "my" die variable "schützt" in einer sub oder einer schleife(und außerhalb ist die variable dann nicht mehr bekannt). aber ich habe "my" auch schon außerhalb gesehen. wie habe ich das dann zu verstehen? oder habe ich mich da nur verguckt..

my ist erstmal da, um die variable zu deklarieren. dadurch sagt man perl, in welchem bereich diese variable sichtbar/gültig ist. mit use strict muss man eine variable auch zwingend deklarieren (ausser spezialvariablen oder packagevariablen, aber noch nicht so wichtig). die gültigkeit gilt für den block (begrenzt durch geschweifte klammern) oder maximal für die ganze datei.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
my $var1 = 1; # gültig in der ganzen datei

{ # einfacher block
    my $var2; # gültig bis zum passenden ende des blocks
    ...
} # $var2-gültigkeit endet hier

sub foo {
    my $var3; # gültig bis zum ende der subroutine
    print $var3;
}

{
    my $var1 = 23; # "überschreibt" äussere variable $var1
                   # bis zum ende des blocks
}


du siehst, man kann damit variablennamen für einen relativ kurzen bereich sichtbar machen, was den wartungsaufwand verringert, da man einen besseren überblick hat, wo welche variablen verwendet werden. daher jede variable in dem kleinstmöglichen bereich deklarieren. ist ausserdem für den speicherverbrauch günstiger.

man kann dann auch in meheren subroutinen gleiche namen verwenden, wenn es vom sinn her passt; da gibt es dann keine konflikte.

wenn man die variable ausserhalb des gültigkeitsbereiches verwendet (oder sich vertippt), dann verhindert strict das und schützt einen so vor fehlern, die man sonst erst suchen müsste.

in manchen einfachen skripten gibt es aber variablen, die man im ganzen skript braucht, die werden dann eben einfach am anfang deklariert, ohne in einer schleife oder anderem block zu sein.

generell würde ich dazu raten, solche variablen gering zu halten, da man dann wie gesagt besser den überblick behält.
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

View full thread Neu in der Perl Welt und ein paar Fragen..