my @kw = sort qw( ze ez zl lz ze ); my @dw = sort qw( ze ez ze ez zd ); my $c = 0; my $kw_i = 0; my $dw_i = 0; while ($kw_i < @kw && $dw_i < @dw) { if ($kw[$kw_i] lt $dw[$dw_i]) { ++$kw_i; next; } if ($dw[$dw_i] lt $kw[$kw_i]) { ++$dw_i; next; } ++$c; ++$kw_i; ++$dw_i; } #### my $dw = ' ' . join(' ', qw( ze ez ze ez zd )); my @kw = qw( ze ez zl lz ze ); my $c = 0; my $dw_ = $dw; for my $kw_part (@kw) { my $pos = index($dw_, " $kw_part"); next if $pos < 0; substr($dw_, $pos+1, 2, ''); ++c; }