use 5.10; my @lines = split /\s*\n/, <<"EOT"; 1, 2, 5, 1, 2, 5, 1, 2, 5 3, 6, 3, 6, 3, 6, 3, 6 4, 1, 28, 0, 4, 1, 28, 0 3, 5, 17, 3, 17, 5 4, 1, 28, 0, 4, 1, 28 EOT foreach (@lines) { $_ .= ", "; say /^(.+?)\1+$/ ? length()/length($1) : 0; } __END__ 3 4 2 0 0