dobra: Perl Syntaxfrage

Guten Morgen,

Ich versuche, eine Sitemap zu basteln
(erstes Ergebnis zum gucken: http://www.wolle-online.eu/LANG_Yarns_Partnershop/sitemap.html)
aber "hänge" jetzt an einem Syntaxproblem und komme nicht weiter :(

mit

my @subpages3 = ssp::get_subpages("$sub2");
main::mprint "@subpages3";

wird "undefined" ausgegeben, wenn es keine Unterordner gibt und (Beispiel) "1320 1270 1210 1290 1300 1310" wenn es welche gibt.

ich brauche also eine Bedingung -> NUR DANN wenn @subpages3 NICHT "undefined" ausgibt
habe es mit  if (@subpages3 != "undefined")  oder if (@subpages3 !~ /undefined/)  versucht - geht beides nicht.
Wie muß ich die Bedingung richtig formulieren?

Kann mir bitte jemand helfen (oder einen Tipp geben, WO ich nachschlagen kann)?

Danke im Voraus
mfG
dobra

  1. Erlegigt - habe den Fehler doch alleine gefunden :D

    so geht's:

    my @subpages3 = ssp::get_subpages("$sub2");
      foreach $check (@subpages3) {
     if ( $check != "undefined") {main::mprint "$check";}
     }

    wünsche allen noch ein schönes WE
    dobra

    1. Hi,

      so geht's:

      Normalerweise müsstest du da mindestens eine Warnung erhalten, wenn du sauber programmiert hast.

      Sowas in der Art:
      Argument "undefined" isn't numeric in numeric ne (!=)

      if ( $check != "undefined") {main::mprint "$check";}

      Wenn du Strings vergleichen willst musst du "ne" statt "!=" verwenden.
      Deine Bedingung ist immer dann wahr, wenn in $check eine Zahl ungleich 0 steht, weil ein String (hier "undefined") hier als 0 interpretiert wird.

      Wenn du prüfen möchstest ob eine Variable undefined ist solltest du, wie bereits von Andreas empfohlen, defined() verwenden, dann brauchst du weder "ne" noch "!=".

      "undefined" heißt in Perl übrigens undef, aber das brauchst du hier nicht.

      mfG,
      steckl

  2. Hi,

    my @subpages3 = ssp::get_subpages("$sub2");
    main::mprint "@subpages3";

    Warum packst Du die Variablen in Strings?

    wird "undefined" ausgegeben, wenn es keine Unterordner gibt und (Beispiel) "1320 1270 1210 1290 1300 1310" wenn es welche gibt.

    Ohne Kenntnis der Funktion mprint kann man nicht viel sagen ...

    habe es mit  if (@subpages3 != "undefined")  oder if (@subpages3 !~ /undefined/)  versucht - geht beides nicht.

    if (!defined(@subpages3))

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. if (!defined(@subpages3))

      Besser:

      unless(@subpages3) {  
        # warnung, fehlerbehandlung o.ä.  
      }
      

      Siehe defined, 4. Absatz.

      Siechfred

      --
      Obacht, hinter jedem noch so kleinen Busch könnte ein Indianer sitzen!