Anzeige:
Ergebnis 1 bis 6 von 6

Thema: cgi: Undefined subroutine

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.10.2003
    Beiträge
    22

    cgi: Undefined subroutine

    hossa

    ich spiele (zumindest versuche ich es ^^) zur zeit ein bichen mit cgi rum. jedoch scheitere ich schon ziehmlich früh bei den einfachsten sachen

    mein script:

    -- CUT HERE --
    #!/usr/bin/perl -Tw

    use strict;
    use CGI qw/:html3/;
    use CGI::Carp qw(fatalsToBrowser);

    print header;
    print start_html('hello world');
    print end_html;
    -- CUT HERE --

    mein fehler:

    Software error:

    Undefined subroutine &main::start_html called at test.cgi line 10.

    jemand eine idee was das ist ?

    mfg
    damogran

  2. #2
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Schreib' das mal lieber so...
    Code:
    use CGI qw/:html3 :standard/;

  3. #3
    Registrierter Benutzer
    Registriert seit
    13.10.2003
    Beiträge
    22
    thx ... jetzt funktioniert es ... komische sache .. ist das normal? in keine der dokus die ich gelesen habe stand davon was drin (z.b. perl in 21 tagen)

    ich hab allerdings schon das nächste problem

    sobald ich eine Variable einfügen will...

    LINE13: $test = "just a simple test";
    LINE25: print "$test"

    bekomme ich folgende fehler

    Global symbol "$test" requires explicit package name at test.cgi line 13.
    Global symbol "$test" requires explicit package name at test.cgi line 25.
    Execution of test.cgi aborted due to compilation errors.

    dieses cgi bringt mich noch ins grab
    Geändert von damogran (07-06-2004 um 08:26 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    13.10.2003
    Beiträge
    22
    aha .. ...

    habe gerade gelesen das das durch "use strict;" ausgelöst wird

    mh... naja jetzt gehts

  5. #5
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Code:
    use strict;
    use warnings;
    use diagnostics;
    Diese drei Zeilen sollten in keinem Script über 30 Zeilen fehlen. Sie helfen Fehler zu vermeiden und zu beheben.

    use strict erfordert u. a. eine Variablendeklaration(mit my). Solltest Du also mal eine Variable falsch schreiben bekommst Du das sofort mitgeteilt. Wenn Du's weglaesst nimmt das Programm eine neue leere Variable an. Da kann schon einige Zeit draufgehen bis der Fehler dann ans Tageslicht kommt. Also schreibe statt
    Code:
    $test = "just a simple test";
    einfach
    Code:
    my $test = "just a simple test";
    Bei groesseren Projekten ist es besser Variablen am Anfang der Subroutine/des Programms mit my zu deklarieren und gleich auch zu kommentieren.

    Warnings warnt vor schlechtem Programmierstil und diagnostics gibt ausführliche Hilfen zu Warnungen und Fehlern.

    > use CGI qw/:html3 :standard/;
    > use ist das normal?

    Nein das ist eben nicht normal. Denn wenn Du da nix angiebst wird das normale genommen(:standard). Wenn Du aber was angiebst(:html3) musst du alles genau angeben.(Ich hab' mir das jetzt mal aus den Fingern gesogen und hoff' dasses stimmt.)
    Geändert von fork (07-06-2004 um 22:05 Uhr)

  6. #6
    Registrierter Benutzer
    Registriert seit
    13.10.2003
    Beiträge
    22
    gute erklärung .. danke

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •