A ver... en principio, son dos cosas distintas:
Using perl Syntax Highlighting
print $q->param('barrio'); # CGI nos saca el valor del parámetro 'barrio'
$params = $q->Vars; # Vars nos devuelve una referencia a un hash
print $params->{barrio}; # del que podemos acceder a sus elementos
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
En teoría, deberían devolver el mismo valor...
Ahora bien, en el manual de CGI, en la sección
FETCHING THE PARAMETER LIST AS A HASH, se dice:
Cuando se usa esto, la cosa es que debes prestar atención por los parámetros CGI multievaluados. Debido a que un hash no puede distinguir entre contexto escalar y lista, los parámetros multievaluados serán devueltos como una cadena de caracteres empaquetada, separadas por el carácter "\0" (nulo). Debes separar esta cadena de caracteres empaquetada para poder obtener los valores individuales.
Bien, ya nos acercamos: el carácter extraño que hay entre 10101 y 0 es un "\0" (byte 0). Por eso, en la pantalla del navegador no se ve, pero sí en el código.
Si, además, lo unimos con tu respuesta anterior, en la que sacas esto:
Using text Syntax Highlighting
$VAR1 = '1010';
$VAR2 = '0';
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
llegamos a la conclusión de que en el formulario, 'barrio' contiene más de un valor (hay más de una caja de texto o de formulario con el nombre 'barrio'.
Entonces, si haces
Using perl Syntax Highlighting
my @barrio = $q->param('barrio'); # ejecución en contexto lista
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Verás que
@barrio contiene dos valores, el correcto y el '0'.
Cosa distinta es como lo ejecutabas antes
Using perl Syntax Highlighting
my $barrio = $q->param('barrio'); # ejecución en contexto escalar
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
En contexto escalar, solo obtenemos el primer valor de param('barrio'), por lo que solo obtenías el valor bueno (4 caracteres).
Y llegamos a
Using perl Syntax Highlighting
my $barrio = $params->->{barrio}; # salida de los valores, de forma empaquetada
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
El hacerlo de esta manera nos devuelve una cadena empaquetada con todos los valores unidos con "\0", y por eso su longitud ahora es 6: los 4 del primer valor, el "\0" de en medio, y el '0' del segundo valor.
Para obtener los valores, nos dicen que hay que hacer un split("\0") (no sé si se escribirá así).
Pues eso: repasa tu formulario, que tendrás más de un 'barrio'...