温馨提示:本文翻译自stackoverflow.com,查看原文请点击:regex - Unexpected behaviour when reading parameters from standard input
perl regex scripting

regex - 从标准输入读取参数时出现异常行为

发布于 2020-03-29 13:16:57
sub Solution{
    $matchflag=0;
    $occurence=0;

    #OUPTUT [uncomment & modify if required]
    my $ind=index($m,$p);


    if ($ind!=-1){
       $matchflag=1;
    }

    $occurence= () = $m =~ /$q/g;


    print("$matchflag\n");
    print($occurence);
}

#INPUT [uncomment & modify if required]
$n=<STDIN>;
$m=<STDIN>;
$p=<STDIN>;
$q=<STDIN>;


Solution();

您好,有人可以告诉我这段代码有什么问题吗?它给了我以下输出。

6
naman
nam
n
0
1

显然0应该是1,因为naman字符串中存在nam。并且1应该是2,因为n在字符串中出现两次。

此代码有什么问题?

查看更多

查看更多

提问者
Naman Bansal
被浏览
111
Polar Bear 2020-02-01 08:51

OP可能意味着代码如下

use strict;
use warnings;

my $n = input();
my $m = input();
my $p = input();
my $q = input();

Solution();

sub input{
    my $input = <STDIN>;

    chomp $input;

    return $input;
}

sub Solution{
    my $matchflag=0;
    my $occurence=0;

    #OUPTUT [uncomment & modify if required]
    my $ind=index($m,$p);


    if ($ind!=-1){
       $matchflag=1;
    }

    $occurence= () = $m =~ /$q/g;


    print("Match flag: $matchflag\n");
    print("Ocurance:   $occurence\n");
}

输出量

6
naman
nam
n
Match flag: 1
Ocurance:   2