Thread Variable in einem Modul deklarieren. (5 answers)
Opened by Kuerbis at 2018-06-30 14:16

Linuxer
 2018-06-30 16:26
#188598 #188598
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Die lexikalische Variable $cache in der Moduldatei für MyPackage ist nicht gleich einer Package-Variable $MyPackage::cache.

Auf letztere könnte man beispielsweis von außen ja noch direkt zugreifen, auf erstere nicht.

Foo.pm (2.2kb):

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package Foo;
use strict;
use warnings;
use 5.020;

my $cache = "foo";

sub foo {
    say "\$cache: ", $cache;
    say "\$Foo::cache: ", $Foo::cache;
}

1;

__END__



foo.pl (1.9kb):

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 /usr/bin/perl
use strict;
use warnings;
use 5.020;

use Foo;


Foo::foo();

$Foo::cache = 'bar';

Foo::foo();


__END__



Resultat: (447b):

Code: (dl )
1
2
3
4
5
$cache: foo
Use of uninitialized value $Foo::cache in say at Foo.pm line 10.
$Foo::cache:
$cache: foo
$Foo::cache: bar
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Variable in einem Modul deklarieren.