Der Code ist in Ordnung, solange Sie die $
von der Vorderseite des Unterprogramm-Aufruf entfernen. Ein Dollarzeichen zeigt einen skalaren Wert, und die Anrufe wie
$result1 = checkCase("Hello");
$result2 = checkCase("world");
Ihr Unterprogramm auch essarily ist unnec lang aussehen sollte. Die Regex-Übereinstimmung gibt einen Wahr/Falsch-Wert zurück und Sie verwenden diesen Wert, um verschiedene Wahr/Falsch-Werte 1
oder 0
zurückzugeben. Viel besser, das Ergebnis der Regex-Übereinstimmung direkt zurückzugeben.
Schließlich, wenn Sie außerhalb ASCII-Zeichen arbeiten dann können Sie die Großbuchstaben Unicode Kategorie verwenden, die \p{Lu}
codiert wird, verwendet wird.
Ich hoffe, dass diese Variante Ihres Codes nützlich ist. Ich habe den Namen des Unterprogramms leicht geändert, weil es üblich ist, nur Kleinbuchstaben und Unterstriche für Variablen- und Unterprogramm-Identifikatoren zu verwenden. Großbuchstaben sind Globals wie Paketnamen vorbehalten.
sub check_case {
$_[0] =~ /^\p{Lu}/
}
print check_case('Hello') ? 'YES' : 'NO', "\n";
print check_case('world') ? 'YES' : 'NO', "\n";
... und? Wie funktioniert es nicht? –
bedeuten Großbuchstaben aus dem ASCII? oder Unicode Großbuchstabe oder Großbuchstabe Codepoint? – jm666