perl: warning: Setting locale failed

En caso de conseguir el siguiente error al instalar o ejecutar ciertos comandos en perl:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = "en_US:en",
	LC_ALL = (unset),
	LC_PAPER = "es_CR.UTF-8",
	LC_ADDRESS = "es_CR.UTF-8",
	LC_MONETARY = "es_CR.UTF-8",
	LC_NUMERIC = "es_CR.UTF-8",
	LC_TELEPHONE = "es_CR.UTF-8",
	LC_IDENTIFICATION = "es_CR.UTF-8",
	LC_MEASUREMENT = "es_CR.UTF-8",
	LC_TIME = "es_CR.UTF-8",
	LC_NAME = "es_CR.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Se puede solucionar ejecutando los dos siguientes comandos:

locale-gen en_US en_US.UTF-8 es_CR.UTF-8

dpkg-reconfigure locales

Nota: Hay que sustituir “es_CR” por el lenguaje que imprime el error.

Convirtiendo los CR/LF en DOS en LF/Unix recursivamente

Lo ideal es tener instalado el comando: dos2unix

^M = <ctrl+v><ctrl+m>

perl -pi -e 's/<ctrl+v><ctrl+m>$//' `find . -type f \( -iname '*.php' -o -iname '*.css' -o -iname '*.js' -o -iname '*.htm*' \) -exec egrep -l '<ctrl+v><ctrl+m>$' {} \;`

Según el análisis de correr:

find . -type f -not \( -iname '*.pdf' -o -iname '*.mov' -o -iname '*.avi' -o -iname '*.mpe' -o -iname '*.mpeg' -o -iname '*.mpg' -o -iname '*.flv' -o -iname '*.swf' -o -iname '*.ico' -o -iname '*.gif' -o -name '*.png' -o -name '*.jpg' -o -name '*.jpe' -o -name '*.jpeg' \)

Con “find” se pueden excluir cierto tipo de extensiones de archivos.

Sustitución de cadenas en todos los archivos

Util para sustituir cadenas en todos los archivos del directorio actual y de manera recursiva dentro de todos sus demás directorios también:

find . -type f -print0 |xargs -0 perl -p -i -e 's/Cadena/Palabra/g'

perl -p -i -e 's/Cadena/Palabra/g' `grep -ril Cadena *`

Por ejemplo, en WordPress, para crear un nuevo tema llamado Poet y totalmente basado en el tema Twenty Eleven, es necesario usar:

find . -type f -print0 |xargs -0 perl -p -i -e 's/Twenty Eleven|Twenty_Eleven/Poet/g';

find . -type f -print0 |xargs -0 perl -p -i -e 's/twentyeleven_/poet_/g';

find . -type f -print0 |xargs -0 perl -p -i -e 's/twentyeleven/poet/g';