Pytanie : Zmienna od moduł na okno

The kod I wysyłać pracować na Linux.  Ale gdy I próbować ono na Windows, I dostawać the następujący błąd:

Global symbol "%hash" wymagać wyraźny pakunek imię przy H:\test.pl kreskowy 6.
Execution H:\test.pl przerywać opłata kompilacja errors.

I oznajmiać %hash w test.pm z "nasz".  I mieć %hash w the @EXPORT szyk.  Dlaczego I dostać ten błąd gdy the dokładny dokładny kodować praca na Linux?

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
# MODUŁ
pakunek test

używać surowy;
używać vars qw (@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);

używać Eksporter;
$VERSION = 1.00;
@ISA = qw (Eksporter);

@EXPORT = qw (%hash);  # Symbol autoexport
@EXPORT_OK = qw (); # Symbol prośba
%EXPORT_TAGS = (); # Definiować imię dla set symbol

nasz %hash;
$hash {etykietka} = wartość;

(1); # To wymagać.  Kasować ten linia!

# PISMO
#! perl

używać surowy;
używać test;

drukować "$_ \ n" dla klucz %hash;

Odpowiedź : Zmienna od moduł na okno

I znajdować the problemowy… wziąć krótko…
Ono właśnie zdarzać się że tam  być już moduł dzwonić test.pm pod C: /Perl/lib/test.pm i ten moduł brać poprzedzanie nad twój moduł.
Tutaj być the wybór:
   * używać "use wyzwolenie" dla siła Perl twój test.pm (use wyzwolenie qw (/your/dir);)
   * lub polepszać, używać inny imię dla moduł, tak jak MyTest.pm (przykład inny)

BTW, ty musieć tylko gdy.
Inaczej using coś lubić %MyTest:: hash być prawdopodobnie lepszy (wyraźny) sposób.

Szczęście!
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
C:\home\jerome >type ee1.pl
#! perl

używać surowy;
używać MyTest;

drukować "$_ \ n" dla klucz %hash;





C:\home\jerome >type MyTest.pm
pakunek MyTest;

używać surowy;
używać podstawowy qw (Eksporter);

nasz @EXPORT = qw (%hash);

nasz %hash = (etykietka => "wartość");

(1); # To wymagać.  Kasować ten linia!




C:\home\jerome >perl ee1.pl
etykietka
Inne rozwiązania  
 
programming4us programming4us