Perl, 45 bytes
;print$_=<>,~~reverse;m;esrever~~,><=_$tnirp;
Bastante sencillo, printes la entrada ( $_=<>) seguida de la reversede ella. reversedevuelve $_porque lo estamos usando en contexto escalar con el prefijo ~~. Luego emparejamos ( m//usando; como delimitador), en contexto vacío, contra el reverso del guión.
Si podemos garantizar que no tendremos que crear un palíndromo esrever,><=_$tnirp, podemos acortar el código a 43 bytes :
g.print$_=<>,reverse.m.esrever,><=_$tnirp.g
Uso
echo -n 'neverod' | perl -e 'g.print$_=<>,reverse.m.esrever,><=_$tnirp.g'
neveroddoreven
Perl, 26 bytes
Incluye código de 25 bytes + 1 para -p.
$_.=reverse;m;esrever=._$
No creo que esto sea válido ya que requiere la -pbandera que no creo que pueda combinarse fácilmente en el contenido del script para hacer un verdadero palíndromo. Casi las mismas llamadas que antes, excepto que se basa en el hecho de que -ptambién agrega un; detrás de escena (en Perls más nuevos ...) para cerrar el m//.
Uso
echo -n 'neverod' | perl -pe ';$_.=reverse;m;esrever=._$;'
neveroddoreven