Estoy trabajando con un script que migra casillas y mensajes de IMAP
El programa toma de un fichero de texto usuario.txt que contiene:
"usuario1 password1 usuario2 password2" (sin comillas y reemplazando usuario1 y2 por el username y als contaseñas correspondientes"
El sistema funciona bien
El codigo de la funcion:
Código:
sub getUserList {
my $users = shift;
unless ( open(F, "<$userList") ) {
print "Error opening $userList: $!\n";
exit;
}
while ( <F> ) {
next if /#/;
chomp;
$sourceUser=$sourcePwd=$destUser=$destPwd='';
s/\s+/ /g;
/(.+)\s+(.+)\s+(.+)\s+(.+)/;
/(.+)[\s+|:](.+)[\s+|:](.+)[\s+i|:](.+)/;
$sourceUser = $1;
$sourcePwd = $2;
$destUser = $3;
$destPwd = $4;
$destUser = $sourceUser unless $destUser;
$destPwd = $sourcePwd unless $destPwd;
push( @$users, "$sourceUser $sourcePwd $destUser $destPwd" );
}
close F;
}
El problema que estoy teniendo es que si la contraseña tiene un espacio en blanco en el medio entonces se "corta"
Eso es por que el contenido de fichero.txt es usado como parametro y son 4 parametros, no se como escribir la contraselña en ese fichero de texto para que se escape el espacio en blanco y lo tome como parte del parametro.
Probe escribir usuario1 \password1 con espacios\ usuario2 password2 pero no me funciona, proba con comillas simples y dobles y tamopoco.
Alguna idea?