Gerrit: Unverständliche Fehlermeldung

Die Fehlermeldung "Not a CODE reference at ....." verweist auf das statement "dat_zeit();"

Mit der Erläuterung im Internet:

(W) The second (fourth, sixth, ...) argument of overload::constant needs to be a code reference. Either an anonymous subroutine, or a reference to a subroutine.

komme ich leider nicht klar.
Kann mir jemand weiterhelfen?
Danke
Gerrit

  1. Hallo,

    Die Fehlermeldung "Not a CODE reference at ....." verweist auf das statement "dat_zeit();"

    Irgendetwas in deinem Code verlangt nach einer Funktions-Referenz, etwas wie:

    sub bla  {
      print "blubb";
    }

    my $ref = &bla;

    und beschwert sich, dass es sowas nicht finden kann.

    Mehr ist ohne genauere Analyse deines Quellcodes wohl nicht zu sagen.

    Viele Grüße,

    Jörg

  2. (W) The second (fourth, sixth, ...) argument of overload::constant needs to be a code reference. Either an anonymous subroutine, or a reference to a subroutine.

    Hast du dir die Dokumentation angesehen? Da steht ganz genau, was dein Fehler ist (siehe Antwort von Jörg).

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    1. (W) The second (fourth, sixth, ...) argument of overload::constant needs to be a code reference. Either an anonymous subroutine, or a reference to a subroutine.

      Ich habe weder eine anonyme Subroutine noch eine Referenz auf eine Subroutine

      Hast du dir die Dokumentation angesehen? Da steht ganz genau, was dein Fehler ist (siehe Antwort von Jörg).

      Das verstehe ich überhaupt nicht, da ich auch keine Konstanten verwende.

      1. Nabend!

        Das verstehe ich überhaupt nicht, da ich auch keine Konstanten verwende.

        Das wusste hier bis eben aber auch niemand. Es waere hilfreich etwas von Deinem Code zu sehen. Wahsaga scheint im Urlaub zu sein. Der hat hier aber die einzig funktionierende Glaskugel.

        1. Das wusste hier bis eben aber auch niemand. Es waere hilfreich etwas von Deinem Code zu sehen.

          Der Code ist zu umfangreich, um ihn hier zu posten.
          Ich habe aber versucht, nachzuvollziehen, was ich in den letzten Wochen geändert habe.

          Da war in c:\xampp\apache\conf\extra die Änderung:
          PerlResponseHandler ModPerl::Registry in
          PerlResponseHandler ModPerl::PerlRun

          Wenn ich die zurücknehme, kommt die Meldung nicht mehr.

          Da sind jetzt vermutlich Server-Spezialisten gefragt?

          1. Wenn ich die zurücknehme, kommt die Meldung nicht mehr.

            Da sind jetzt vermutlich Server-Spezialisten gefragt?

            Ohne code hilft dir auch kein Spezialist. Zumindest die Zeile in der der Fehler auftritt wäre nicht schlecht.

            Struppi.

            1. Ohne code hilft dir auch kein Spezialist. Zumindest die Zeile in der der Fehler auftritt wäre nicht schlecht.

              Ich habe das Programm jetzt auf ein Minimum reduziert.
              Die Fehlermeldung nach Klick auf den Sende-Button:

              Software error:
              Not a CODE reference at E:/homepages/beinahe-gratis/cgi-bin/kontakt.pl line 17.

              Das Programm

                
              #!/usr/bin/perl -w  
              use strict;  
              use gettst;  
              use CGI;  
              use CGI::Carp qw(fatalsToBrowser);  
              print "Content-type: text/html\n\n";  
              print <<AAA;  
                 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
                 <html>  
                 <head>  
              AAA  
                
                 gettst ();  
                
              print <<BBB;  
                 </head>  
                 <body>  
                 <form action="http://www.beinahe-gratis.de/cgi-bin/kontakt.pl" method="post">  
                  <input name="senden" value="Senden" type="submit">  
                
                 </form>  
                 </body>  
                 </html>  
              BBB  
                
              
              

              Das Modul gettst.pm:

                
              sub gettst  
                 {  
                 }  
                
              1;  
              
              
              1. Ich habe das Programm jetzt auf ein Minimum reduziert.
                Die Fehlermeldung nach Klick auf den Sende-Button:

                Software error:
                Not a CODE reference at E:/homepages/beinahe-gratis/cgi-bin/kontakt.pl line 17.

                Wenn ich deinen Code 1:1 kopiere erhalte ich keinen Fehler, d.h. du verschweigst uns etwas.

                use CGI;
                use CGI::Carp qw(fatalsToBrowser);
                print "Content-type: text/html\n\n";
                print <<AAA;
                   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
                   <html>
                   <head>
                AAA

                Ich frag mich, warum du das CGI Modul einbindest und dann nicht benutzt?

                Struppi.

                1. Wenn ich deinen Code 1:1 kopiere erhalte ich keinen Fehler, d.h. du verschweigst uns etwas.

                  Ja, aber was?
                  wie schon geschrieben,

                  Da war in c:\xampp\apache\conf\extra die Änderung:
                              PerlResponseHandler ModPerl::Registry in
                              PerlResponseHandler ModPerl::PerlRun
                             Wenn ich die zurücknehme, kommt die Meldung nicht mehr.

                  läuft es bei anderer Server-einstellung, die ich aber gemacht habe, damit wieder was anderes läuft!

                  Ich frag mich, warum du das CGI Modul einbindest und dann nicht benutzt?

                  Das wird schon benutzt, ich habe ja abgespeckt und das halt vergessen zu entfernen.

          2. Da war in c:\xampp\apache\conf\extra die Änderung:
            PerlResponseHandler ModPerl::Registry in
            PerlResponseHandler ModPerl::PerlRun

            *Grmpf* Nicht nur, dass du uns den relevanten Code vorenthältst, du sagst noch nichtmal, dass es hier um mod_perl geht.

            Da sind jetzt vermutlich Server-Spezialisten gefragt?

            Nein, eher Leute, die sich mit mod_perl auskennen. Ich weiß nicht, inwieweit du in diesem Forum jemanden findest, ansonsten stelle deine Frage hier: http://forum.perl-community.de/

            Siechfred

            --
            Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
            1. Hallo Siechfred,

              *Grmpf* Nicht nur, dass du uns den relevanten Code vorenthältst, du sagst noch nichtmal, dass es hier um mod_perl geht.

              Als blutiger Anfänger konnte ich leider nicht wissen, dass Perl nicht Perl ist. Dass dies wichtig ist erfahre ich ja nur in einer solchen Diskussion. Vielleicht ist dann auch noch wichtig, dass ich Windows XP verwende?
              Den abgespeckten Code habe ich gerade gepostet.

              1. Den abgespeckten Code habe ich gerade gepostet.

                Nach Struppis Test gehe ich nachwievor davon aus, dass es ein mod_perl-Problem ist. Besteht ein Grund, mod_perl zu verwenden, insbesondere weil auf deinem Webserver mod_perl läuft? Was passiert, wenn du das Script auf deinem Webspace ausführen lässt?

                Ansonsten scheint es ein versionsbedingtes Problem zu sein, wühle dich mal durch die Antworten zu diesem Posting in der mod_perl-Mailingliste.

                Siechfred

                --
                Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
  3. Hinweis:

    Gerrit hat sich auf meinen Vorschlag hin auch an die Perl-Community gewandt: Thread im Forum der Perl-Community.

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.