Claus: global, lokal, egal/katastrophal?

Beitrag lesen

Hi,
ich bin am Verzweifeln.
Ich hatte ursprünglich die notwendigsten Variablen zu Beginn des Programms mit my (...); definiert, die übrigen in den Subroutinen.
Immer wieder traten Fehler auf, die dadurch behoben wurden, dass ich
die zu Beginn des Programms mit my definierten Variable mit use vars qw(....); definierte.
Jetzt habe ich ein Mix aus "my-def."- und "use"-definierten Variablen.
Mir ist auch nach Lesen der Beschreibung nicht klar, warum einmal my genügt zum andern aber nicht.
Ich sehe keinen Unterschied in der Verwendung der Variablen.
Das ganze Programm zu posten, wäre unsinnig.
Vielleicht kann mir jemand schon anhand der Schilderung einen Tipp geben.

Ich habe folgende Struktur:

  
#!/usr/bin/perl -w  
use strict;  
use warnings;  
my ($Rechner_IP);  
  
sub kontakt()  
  {....  
   }  
  
....  
  
sub bestaetigungsausgabe()  
  {....  
  }  
  
  
###############################################################################################################  
#                                Hauptprogramm  
###############################################################################################################  
  
use CGI;  
use CGI::Carp qw(fatalsToBrowser);  
  
$Rechner_IP  = $ENV{REMOTE_ADDR};  
  
....  
  
  

Die Variable $Rechner_IP wird in verschiedenen Subroutinen angesprochen und ist bis auf eine Stelle immer mit dem korrekten Wert vorhanden.
Sie ist auch nicht ein zweites Mal definiert.
Sobald ich sie mit "use vars qw($Rechner_IP);" definiere, ist sie überall vorhanden.