确定字符串是否以Perl中的大写字符开头

Dan*_*nes 6 perl case-sensitive uppercase

我需要在Perl中创建一个子程序,它确定一个字符串是否以大写字符开头.到目前为止我所拥有的是以下内容:

sub checkCase {
    if ($_[0] =~ /^[A-Z]/) {
        return 1;
    }
    else {
        return 0;
    }
}

$result1 = $checkCase("Hello");
$result2 = $checkCase("world");
Run Code Online (Sandbox Code Playgroud)

Bor*_*din 8

只要$从子程序调用的前面删除代码就可以了.美元符号表示标量值,调用应该如下

$result1 = checkCase("Hello");
$result2 = checkCase("world");
Run Code Online (Sandbox Code Playgroud)

你的子程序也是不必要的.正则表达式匹配返回true/false值,并且您正在使用该值返回不同的true/false值10.最好直接返回正则表达式匹配的结果.

最后,如果您在ASCII字符之外工作,那么您可能希望使用大写字母 Unicode类别,该类别使用编码\p{Lu}.

我希望你的代码的这种变化是有用的.我稍微更改了子程序的名称,因为标准做法是只使用小写字母和下划线表示变量和子程序标识符.大写字母是为包名称等全局字符保留的.

sub check_case {
  $_[0] =~ /^\p{Lu}/
}

print check_case('Hello') ? 'YES' : 'NO', "\n";
print check_case('world') ? 'YES' : 'NO', "\n";
Run Code Online (Sandbox Code Playgroud)


sim*_*onp 4

这几乎是正确的。但[A-Z]可能不匹配大写重音字符,具体取决于您的区域设置。更好用/^[[:upper:]]/

$另外,您的子例程调用前面不应有该字符。即它们应该是:

$result1 = checkCase("Hello");
$result2 = checkCase("world");
Run Code Online (Sandbox Code Playgroud)