Sto cercando di fare una shell in perl

ecco il code:
codice:
#! /usr/bin/perl

#---- CREO FILE CONFIG ----

system ("whoami > .user.gsh");
system ("uname -n > .host.gsh");

open (USER,".user.gsh");
chomp($utente = <USER>);
close USER;
open (HOST,".host.gsh");
chomp ($host = <HOST>);
close HOST;

system ("rm .user.gsh");
system ("rm .host.gsh");

# -------------------------

print "Galatolo SHell v 0.1\n\n";
print "Benvenuto $utente su $host\n\n";

# --- CICLO PROGRAMMA -------


for(;;){
print $utente."@".$host." >> ";
chomp($cmd = <STDIN>);

#--- OK??? ---
open FILE,"/etc/gsh/$utente.conf";
@lista = <FILE>;
if ($lista[0] eq ""){
print "Error : Chiedere all'amministratore di creare il file /etc/gsh/$utente.conf con la lista dei comandi autorizzati!\n";
}
else {
@acmd = split(/ /,$cmd);
for ($x=0;$x<@lista;$x++){
chomp(@lista);


if ($acmd[0] eq $lista[$x]){
$ok = "TRUE";
}
else {
$ok = "FALSE";
}
}

}

# -----

if ($ok eq "TRUE"){
system ($cmd);
} else {
print "Error : Comando non autorizzato dall'amministratore\n";
}
}

# --- FINE CICLO ----
Questo è il risultato:

codice:
federico@crash-overflow:~/perl/gsh$ ./gsh
Galatolo SHell v 0.1

Benvenuto federico su crash-overflow

federico@crash-overflow >> ls
Error : Comando non autorizzato dall'amministratore
federico@crash-overflow >> ls
Error : Comando non autorizzato dall'amministratore
federico@crash-overflow >> echo asd
Error : Comando non autorizzato dall'amministratore
federico@crash-overflow >>
questo è il file /etc/gsh/utente:

codice:
ls
echo
mkdir
nano
Perche fa cosi???