Ja, das wäre der Grundgedanke.
Wahrscheinlich wäre es sinnvoller, die Elemente in @messages vorher alle zu konvertieren (dann wäre das einmal getan und muss nicht bei jedem Check neu gemacht werden).
Das gezeigte Fragment ist sehr klein, sodass man wenig Ansatzpunkte zu einer zur Aufgabe passende Optimierung hat.
Wenn @messages nur über dieses gezeigte Fragment befüllt wird und die $message generell modifiziert werden darf, dann reicht es, $message einmal vor der Prüfung zu konvertieren. Es wird dann die konvertierte Version in @messages abgelegt, und man braucht @messages danach nicht mehr anzufassen.
$message = lc $message;
next if( grep { $message eq $_ } @messages );
push(@messages,$message);
shift @messages if 200 < @messages;
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!