Regex 从标准输入读取参数时出现意外行为
显然,0应该是1,因为nam存在于naman字符串中。而且1应该是2,因为n在字符串中出现两次 此代码有什么问题?当您阅读Regex 从标准输入读取参数时出现意外行为,regex,perl,scripting,Regex,Perl,Scripting,显然,0应该是1,因为nam存在于naman字符串中。而且1应该是2,因为n在字符串中出现两次 此代码有什么问题?当您阅读时,需要删除字符串末尾的\n换行符 6 naman nam n 0 1 chomp for $n=, $m=, $p=, $q=, ; 您可能还想通过使用我的词表代替全局变量来考虑更好的范围,并且一些检查使生活变得更容易,如使用严格;使用警告OP可能意味着代码如下 chomp for $n=<STDIN>, $m=<STDIN>,
时,需要删除字符串末尾的\n
换行符
6
naman
nam
n
0
1
chomp for
$n=,
$m=,
$p=,
$q=,
;
您可能还想通过使用<代码>我的<代码>词表代替全局变量来考虑更好的范围,并且一些检查使生活变得更容易,如<代码>使用严格;使用警告代码>
OP可能意味着代码如下chomp for
$n=<STDIN>,
$m=<STDIN>,
$p=<STDIN>,
$q=<STDIN>,
;
你需要告诉我们你的投入是什么。请回答您的问题,并说明如何调用此代码。您应始终使用
use strict;使用警告代码>。您有许多范围问题。chomp($n=)
或$n=;chomp($n)
也同样有效。另外,有没有办法避免在接受如此简单的输入时写这么多次?是的,foreach和变量别名。用$n、$m来咀嚼($=);因此,在Java或C这样的语言中,我们需要在函数调用期间传递参数,以便函数可以访问这些变量。在这里,调用函数时不传递参数。这里发生了什么?函数可能有也可能没有任何参数,它可以返回也可能不返回任何内容。例如,一些函数可以优化数据库,验证过程是否成功完成,并且不返回任何内容。有些函数可能有参数,用它们进行一些运算,然后返回结果——例如计算器运算,如加、减、乘、幂。
chomp for
$n=<STDIN>,
$m=<STDIN>,
$p=<STDIN>,
$q=<STDIN>,
;
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