Perl Syntaxfrage
dobra
- perl
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
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
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
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
if (!defined(@subpages3))
Besser:
unless(@subpages3) {
# warnung, fehlerbehandlung o.ä.
}
Siehe defined, 4. Absatz.
Siechfred