[英]perl STDIN to subroutine
我正在編寫一個代碼來查找輸入行中的任何非字母數字字符。 我嘗試了以下代碼:
sub Verify
{
my $string = ($_[0]);
print "$string\n";
if ($string =~ /[^a-zA-Z0-9]/)
{
print "The string contains non-alphanumeric characters\n";
}
else
{
print "No invalid characters";
}
}
$message = <STDIN>;
Verify ($message);
我嘗試了不同的輸入,但 output 始終是"The string contains non-alphanumeric characters"
。 這段代碼有什么問題?
從 STDIN 讀取時,末尾還有 \n 字符或變量。 所以你必須在匹配正則表達式之前刪除它。 在chomp function 的幫助下,這很容易:
chomp $string;
出於調試目的,將 print 語句更改為print "[$string]\n";
看到這個效果。
選項1。-
使用/^[[:alnum:]]+$/
sub Verify
{
my $string = ($_[0]);
print "$string\n";
if ($string =~ /^[[:alnum:]]+$/)
{
print "ok";
}
else
{
print "bad";
}
}
$message = <STDIN>;
Verify ($message)
選項 2.-
使用/^[a-zA-Z0-9]+$/
sub Verify
{
my $string = ($_[0]);
print "$string\n";
if ($string =~ /^[a-zA-Z0-9]+$/)
{
print "ok";
}
else
{
print "bad";
}
}
$message = <STDIN>;
Verify ($message)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.