Thread Plötzlich Fehlermeldung "Not A Scalar" (9 answers)
Opened by tuxilein at 2006-01-27 14:53

tuxilein
 2006-01-27 14:53
#62356 #62356
User since
2006-01-27
19 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

ich hoffe es kann mir hier jemand helfen.

Nun, ich schreibe gerade nen Socket Server mit Client das ganze Funktioniert auch, nun jetzt habe ich daran weitergearbeitet und nun Bekomme ich nach ner gewissen zeit bzw Ablauf einen Fehler:

Not a SCALAR reference at ClientConnection.pm line 129, ....

Nun das lustige ist es ging schon und es wird erst nach dem 2. durchlauf diese meldung ausgespuckt und somit ist natürlich schluss mit der Connection.

Bei dem #**** kommt die Fehlermeldung. Das lustige ist kommentiere ich den Teil aus bzw fang erst später mit einem IF an geht es. Es ist aber kein unterschied bei den anderen.

Code (perl): (dl )
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
30
31
32
    
    my $xml = XML::Mini::Document->new();
    $xml->parse( $mesg );
    my $xmlHash = $xml->toHash;
    
    if( exists( $xmlHash->{cafe_psfsn} ) )    #****
    {
        $self->{runLevel} = 1 if( $self->{runLevel} < 1 );
        return $self->{cmdGen}->cafeMesg();
    }
    elsif( exists $xmlHash->{version} && $self->{runLevel} >= 1 ) {
        return $self->{cmdGen}->versionMesg( $self->{config} ); }
    elsif( exists $xmlHash->{get_version} && $self->{runLevel} >= 1 ) {
        $self->{runLevel} = 2 if( $self->{runLevel} < 2 );
        return $self->{cmdGen}->versionMesg( $self->{config} ); }
    elsif( exists $xmlHash->{get_prog} && $$self->{runLevel} >= 2 )
    {
        # generiere update system object
        $self->{upSys} = UpdaterSystem->new( $self->{config}->{GENERAL}->{programfilename} );
        return $self->{cmdGen}->progMesg( $self->{upSys}->getFileParams(
               
     $self->{config}->{VERSION}->{prog} ) );
    }
    elsif( exists $xmlHash->{login} && $self->{runLevel} >= 2 ) {
        $self->{runLevel} = 3 if( $self->{runLevel} < 3 ); }
    elsif( exists $xmlHash->{logout} && $self->{runLevel} >= 3 ) { }
    elsif( exists $xmlHash->{disconnect} ) { exit; }
    elsif( exists $xmlHash->{error} ) { }
    elsif( exists $xmlHash->{search} && $self->{runLevel} >= 3 ) { }
    elsif( exists $xmlHash->{ok} ) {        
        &okMesg( $self, $xmlHash ); }
}




Jetzt habe ich eine andere Lösung verfolgt, da kanllt es wieder dort.

Hat jemand für mich eine Lösung - i verzweifle langsam!
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
 foreach my $key ( keys( %$xmlHash ) )
    {
        print "key $key";
        eval{
        if( $key =~ /cafe/ )#eq 'cafe_psfsn' )
        {
            $self->{runLevel} = 1 if( $self->{runLevel} < 1 );
            return $self->{cmdGen}->cafeMesg();
        } };
        print "error $!" if $!;
        if( $key eq 'version' && $self->{runLevel} >= 1 ) {
 ...................
\n\n

<!--EDIT|tuxilein|1138367256-->

View full thread Plötzlich Fehlermeldung "Not A Scalar"