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


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("$matchflagn");
print($occurence);
}
#INPUT [uncomment & modify if required]
$n=<STDIN>;
$m=<STDIN>;
$p=<STDIN>;
$q=<STDIN>;

Solution();

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

6
naman
nam
n
0
1

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

这段代码有什么问题?

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

chomp for
$n=<STDIN>,
$m=<STDIN>,
$p=<STDIN>,
$q=<STDIN>,
;

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

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: $matchflagn");
print("Ocurance:   $occurencen");
}

输出

6
naman
nam
n
Match flag: 1
Ocurance:   2

最新更新