Página 1 de 1

Problema para definir un arreglo dentro de un CGI

NotaPublicado: 2006-09-26 13:58 @624
por Nana
Hola.

Hace 15 dias empece a explorar el mundo de Perl. Estoy desarrollando una serie de scripts para optimizar el funcionamiento de un cluster de servers de correo basados en Communigate.

Tengo el siguiente script:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach my $UserName (sort keys %$Accounts)
{
  my $accountData = $cli->GetAccount("$UserName\@$Domain");
  my $storageUsed = $cli->GetAccountInfo("$UserName\@$Domain","StorageUsed");
 
  if (my $test = @$accountData{'UseAppPassword'})
  {
        print "$UserName\@$Domain\, $storageUsed\n, $imbox\n";
  }

  ++$nTotal;
}
print " $nTotal accounts were total, $nListed Listed, "
       .($nTotal-$nListed)." left.\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


con el cual obtengo un listado de las cuentas suspendidas por mi Anti Spam y la capacidad de estos buzones.

Ahora lo que necesito es borrar esas cuentas y volver a crearlas. La verdad he pensado en tomar la salida del script anterior y almacenarla en una variable y luego trabajar con esta pero no se si hacerlo como un arreglo o como hash...

Porfa les agradezco cualquier sugerencia...

Gracias :D

NotaPublicado: 2006-09-26 14:20 @639
por monoswim
Necesitas borrar un key del %$Accounts ? porque para eso no necesitas crear otra variable, simplemente usas la funcion delete...

No entendí mucho el problema...

PD: Bienvenido/a a los foros

Hi MonoSwim

NotaPublicado: 2006-09-26 15:55 @704
por Nana
Hola,

Con el segmento del script que adjunte en el post anterior estoy mostrando todos los buzones de correo que tengan la variable UseAppPassword y la variable StorageUsed de cada una de esas cuentas de correo (siempre manejando el CGI de Communigate) ahora lo e quiero es borrar esas cuentas y luego volver a crearlas con la variable UseAppPassword = NO.

como puedo hacer esto ?... como puedo almacenar la salida (en lugar de imprimirla) y hacer lo que necerito ?


Gracias,

PD: De veras te agradezco muchisimo muchisimo tu ayuda :wink:

NotaPublicado: 2006-09-26 15:57 @706
por explorer
La pregunta es sencilla así que la respuesta es sencilla: da igual. :-)

Quiero decir que tanto puedes guardar los valores en un array como en un hash. Lo normal es guardarlos en un array si sólo vas a guardar un elemento. Y en un hash si quieres asociar un valor a cada elemento.

Vas guardando elementos con push @array, $valor; y luego los recorres con un foreach $valor ( @array ).

NotaPublicado: 2006-09-26 17:10 @757
por Nana
No entendi :cry:

NotaPublicado: 2006-09-26 18:18 @804
por explorer
Lo primero es lo primero. Yo no tengo ni idea de cómo funciona ese Communigate, así que no sé exáctamente qué es lo que tienes que hacer para borrar las cuentas.

En cuanto a lo de usar un array, un poquito más descrito sería, en el código que has puesto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
# Al principio:
@usuarios = ();
#...

#...
  if (my $test = @$accountData{'UseAppPassword'})
  {
    print "$UserName\@$Domain\, $storageUsed\n, $imbox\n";
    push @usuarios, $UserName;  # Vamos guardando el nombre de usuario
  }
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
luego... al final, recorremos el array, borrando los usuarios
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach $usuario ( @usuarios ) {
    # Borramos al $usuario
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2006-09-27 12:50 @576
por Nana
Estimado Explorer,

gracias por tu ayuda.. todos los scripts ya corren ok