Thread Programmgerüst und Gültigkeitsbereiche (20 answers)
Opened by tonewheel at 2007-04-13 12:24

sid burn
 2007-04-14 21:14
#23675 #23675
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=PerlProfi,14.April.2007, 19:00]Ergänzend zu sid burn:
Falls du nur eine package Variable erzeugen möchtest, ohne eine lexikalische zu überschreiben / erstellen, benutzt du weder my noch our, sondern schreibst es einfach so:
...
Jedenfalls mache ich das immer so...[/quote]
Hat aber den Nachteil das wenn du den Package Namen änderst auch alle Variablen anpassen musst.

-----------------------

Ansonsten sollten mehrere package Deklaration sowieso nicht in einer Datei seien, und wenn man es doch macht reicht wie gesagt auch einfach einen Block um die packages zu machen.

Zwar wird dann im Block der package Test umgibt die lexikalische Variable $test durch die our Deklaration überschrieben, aber dieser Automatische Nebeneffekt wird beim Verlassen des Blockes ja wieder aufgehoben.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use warnings;
use strict;

my $test = 'Hallo';

{
package Test;
# package Variable in Test
our $test = 'Welt';
}

package main;
# Ausgabe beider Variablen
print join(' ', $test, $Test::test), "\n";


Quote
In main hätte $test immer noch den alten Wert.
...
# lexikalische Variable in main

Lexikalische Variablen hängen nicht vom Package ab. ;)

Du kannst danach auch ins Packacke "foo" wechseln und die lexikalische Variable hätte immer noch den selbern Wert, und würde immer noch nur durch $test ausgegeben werden.\n\n

<!--EDIT|sid burn|1176571317-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Programmgerüst und Gültigkeitsbereiche