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