Вот еще одно решение, вдохновленное комментарием ysth (если это очень длинная строка и последний foo находится в начале, что приводит к медленному регулярному выражению): split
строка в 'foo' и анализ последнего элемента длячисла:
my @results = split /foo/, $string;
my ($digits) = ($results[-1] =~ m/^(\d+)/);
Опять же, я всегда буду использовать самый простой код, пока он не покажется, что код занимает слишком много времени (а это было проблемой в общем приложении), а затем я проведу тестряд решений по сравнению с типичными входами, чтобы увидеть, какой из них лучше.