#!/usr/bin/perl -w use strict; my ($str); open(DF, q{43.txt}) or die(qq{Can't open 43.txt for input: $!\n"}); { my @string = ; chomp(@string); $str = join('', @string); } close(DF); foreach my $to_consider (reverse(1..length($str) - 2)) { foreach my $start_at (0..length($str) - $to_consider - 1) { my $str1 = substr($str, $start_at, $to_consider); foreach my $against (1..length($str) - $to_consider) { if (substr($str, $start_at + $against, $to_consider) eq $str) { printf qq{Found at %d and %d, of length %d\n}, $start_at, $start_at + $against, $to_consider; exit; } } } }