Leo de una base de datos un registro que contiene una cadena separada con backslashes '\' y guardo los valores de los subcampos en diferentes variables haciendo un split sobre la cadena. El problema que se me presenta es que cuando algunos subcampos no tienen valor alguno quedan seguidos 2 o mas backslashes y al tratarlos en perl uno de estos desaparece, puesto que perl lo toma como un escape al sigiuiente backslash. (interpolation)
No puedo modificar la cadena (var2) porque la leo de la base datos y no tengo(y no puedo) ninguna forma de modificar la base datos previamente.
- Código: Seleccionar todo
use strict;
my ($var1, $var2, $a1, $b2, $c3, $d4, $e5);
# Todos los campos tienen un valor
$var1 = '11\22\33\44\55'; #Esto viene de la base datos y es inmodificable en la base de datos, pero una vez aqui si lo puedo modificar.
($a1,$b2,$c3,$d4,$e5) = split /\\/,$var1;
print "a1=$a1 b2=$b2 c3=$c3 d4=$d4 e5=$e5\n";
# Imprime: a1=11 b2=22 c3=33 d4=44 e5=55
#Esto viene de la base datos y es inmodificable
#en la base de datos, pero una vez aqui si lo
#puedo modificar. El problema es que no se
#que backslash fue el que desaparecio.
# Por ejemplo, podría tener 11\\\\55 o \\33\\55 o 11\\\\ o ...
# Los campos 3 y 4 estan vacios
$var2 = '11\22\\\55';
($a1,$b2,$c3,$d4,$e5) = split /\\/,$var2;
print "a1=$a1 b2=$b2 c3=$c3 d4=$d4 e5=$e5\n";
# Imprime: a1=11 b2=22 c3= d4=55 e5= # Indeseado >-(
# Yo quiero que imprima
# a1=11 b2=22 c3= d4= e5=55 <-- Deseado - esperado :-)
Hay alguna forma de "corregir" este efecto por ahora indeseado?
Gracias por su atención.
Carlos Manuel