从标准输入读取参数时出现意外行为

Nam*_*sal 0 regex scripting perl

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();
Run Code Online (Sandbox Code Playgroud)

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

6
naman
nam
n
0
1
Run Code Online (Sandbox Code Playgroud)

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

这段代码有什么问题?

Сух*_*й27 6

当您读取时,<STDIN>您需要删除\n字符串末尾的换行符,

chomp for
    $n=<STDIN>,
    $m=<STDIN>,
    $p=<STDIN>,
    $q=<STDIN>,
;
Run Code Online (Sandbox Code Playgroud)

您可能还想通过使用my词法而不是全局变量来考虑更好的范围,以及一些使生活更轻松的检查,例如use strict; use warnings;