簡體   English   中英

perl STDIN 轉子程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM