[vienna.pm] Wirkungsbereich von "my"

Roland Bauer roland.bauer at fff.at
Mon Feb 28 15:20:11 CST 2000


* * * vienna-pm-list * * *


Hallo Peter,

> Ich habe in einer if-Schachtelung Variablendefinitionen mit my
> vorgenommen:
>
> if (-e $directory) {
>     my %strings_db = ();
>     %strings_db = &read_database ($filename);
> }
>
> Nun bin ich draufgestossen, dass die Werte auf dem Hash ausserhalb
> der if-Schachtelung nicht mehr vorhanden sind. Offensichtlich ist die
> Variable nur fuer die if-Abfrage definiert worden.

Stimmt. Gilt nur innerhalb des Blocks ... { my $xx }

> Ist es ueblich,
> diese am Programm anfang einfach mit
>     my %strings_db = ();
> zu definieren?

Nicht am Programmanfang, sondern (idealerweise)
nur gerade in dem Block der
alle umschliesst, in denen Du die Variable verwenden willst:

#!/usr/bin/perl

{

    {
    }

    {
        # BEGINN
        my $x;
        { $x; }
        { $x; }
        # ENDE
    }

        {
            #hier ist $x unbekannt
        }

}

Manchmal ist das aber der Programmanfang ;-)

> Ist es hier sinnvoll gleich fest definierte Startwerte
> (also z.B. leerer Hash) vorzugeben, oder ist das nicht noetig und man
> handlet sich damit mehr Schwierigkeiten ein als erwartet.

Ich mach das meistens nicht, aber bei
my $xx;
jammert er unter "use diagnostics;" bzw "-w", dass er nicht
weiss, ob du "" oder 0 gemaint hast.


> P.S.: Das Camel-Buch muss ich erst von der Post abholen :-) .

Ohne Kamel ist's natuerlich hart ;-)


> Habs am
> Freitag bestellt und am Samstag war ich dummerweise auf der CeBit...

Und, gab's was Interessantes?

Roland

###
You are subscribed to vienna-pm-list as Roland Bauer <roland.bauer at fff.at>
http://www.fff.at/fff/vienna.pm/



More information about the Vienna-pm mailing list