je déterre ce sujet résolu pour apporter une petite précision (qui a déjà été évoqué à propos du basename).

La variable $0 est à traiter avec le module Find :
use Find::Basename;
my $nom_script...