Beat: Nutzung von $Variable nach IF Anweisung

Beitrag lesen

Ich kommentiere mal nur einen Abschnitt

if ($Daten{"NAME"})

Hier fragst du, ob $Daten{"NAME"} true ist.
Was aber, wenn der Hashkey "NAME" nicht existiert, dann hast du ihn soeben erzeugt, mit der möglichen Warnung: match auf nicht initialisierte Variable.

if( exists $Daten{"NAME"} )

{
        $tNAME = $Daten{"NAME"};
        $tNAME =~ m/^((.*?).(.*).(.*))$/;
        $TabNAME = $3;

Dein Pattern und deine Zuweisung ist kompliziert und braucht hier eine überflüssige Variable $tName
                                                $1
statt dessen direkte Zuweisung:
Wir verwenden non capturing parantheses (?: )

          $Daten{"NAME"} =~ m/^\((?:.*?)\.(?:.*)\.(.*)\)$/  
                and $TabNAME = $1;  

Die Zuweisung ist damit vom Erfolg des Matches abhängig.
Die weiteren Abschnitte sind analog.

if($Daten{"DEFINE"})

Hoffentlich existiert der Schlüssel? Du meinst eher if( exists( ... )){}
lerne das Problem Autovivikation von Hashkeys durch abfragen wie
if ( $Hash{key} )
oder
if ( defined $Hash{key} )

Diese Autovovokation des Keys kann nur verhindert werden durch:

if( exists $Hash{key} )

mfg Beat

--
Woran ich arbeite:
X-Torah
><o(((°>    ----       ><o(((°>
   <°)))o><                      ><o(((°>o