如何在其范围之外的foreach循环中访问局部变量?

时间:2018-02-16 09:49:27

标签: perl loops

我有两个字符串数据类型数组,我正在比较那些使用foreach循环并在找到匹配时提高计数器

my  @array1 = ('India');
my  @array2 = ('India', 'America');
foreach my $a (@array1) {
    foreach my $b (@array2) {
        my $count=0;  
        if($a eq $b) {
             $count++;
        }
    }
}

现在我想在其范围之外使用这个count变量

 if ($count > 0) { 
      call_some_function();
 }

我哪里错了?

2 个答案:

答案 0 :(得分:3)

$count被声明到foreach循环中,它在此循环之外不存在,如果您想在循环外使用$count,只需将my $count=0放在此之前第一个foreach并将其删除到foreach

这是你想要的:

my @array1=('India');
my @array2=('India','America');
my $count=0;
foreach my $country1(@array1)
{
   foreach my $country2(@array2)
   {
        if($country1 eq $country2)
        {
             $count++;
        }

   } 
}

答案 1 :(得分:0)

在循环之外声明变量,你还得到$ count中的拼写错误:

my $count = 0;
foreach $a (@array1) {
   foreach $b (@array2) {
      if ( $a eq $b ) {
         $count++;
      }
   }
}