Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/02/2015, 07:16
Avatar de Hyemin
Hyemin
 
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Problemas con espacios en blanco en parametros de Perl

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?