Hoi,
Mein Errorlog sagt:
Use of reserved word "our" is deprecated at auswahl.pl line 13.
Global symbol "$x" requires explicit package name at auswahl.pl
line 13.
Und in dieser Zeile steht nur:
our $x = 0;
Wie gesagt. 'our' gibt es erst seit Perl 5.6.0. Benutze 'use vars
qw($x);'.
ehrlichgesagt kann ich mit dieser Erklärung nicht wirklich viel
anfangen. Was bedeutet es wenn man einen Namensraum (Namespace)
einleitet ?
Ok, nochmal. Also, jedes Modul hat einen eigenen Namens-Raum. Das
bedeutet, dass gleichlautende Variablen in zwei Modulen trotzdem
verschieden sind; probier mal das hier:
#!/usr/bin/perl
$x = 0;
package hund;
$x = 10;
package katze;
$x = 20;
package main;
print $x,"\n";
print $hund::x,"\n";
print $katze::x,"\n";
eof
Du siehst hier, dass es genau eine Variable gibt ($x), die aber doch
3x repraesentiert ist: jedesmal in einem anderen Namensraum. Der
Default-Namensraum ist 'main', ein ausfuehrendes Script hat in jedem
Fall diesen Namensraum, es sei denn, es leitet durch 'package' einen
anderen ein.
Was ein Modul einbinden bedeutet, ist mir eigentlich klar, aber
halt nicht das mit den packages ...
Lies mal perldoc perlmod (http://www.perldoc.com/perl5.6.1/pod/perlmod.html),
das ist zu diesem Thema sehr aufschlussreich.
Gruesse,
c.j.k