ciao,
il problema è che:
^giu^
viene interpretato con i caratteri speciali delle espressioni regolari
(^ significa sia "non è", sia "la riga comincia con").
Basta spiegare al Perl, che i simboli all'interno dei nickname non sono caratteri speciali,
ma semplici letterali.
In pratica basta che sostituisci questa riga:
codice:
if (grep {m|^$msgnick?$|} @admins) {
così:
codice:
if (grep {m|^\Q$msgnick\E?$|} @admins) {
nota i simbolI: \Q \E da aggiungere nel tuo codice.
Questi simboli significano appunto che il testo incluso va interpretato come stringa letterale.
Così dovrebbe funzionare.
Di questo:
non ci dovrebbe essere troppo bisogno.
Infine ti do un consiglio.
Aggiungi:
codice:
use strict;
use warnings;
al tuo codice.
Non può che fare un gran bene!