[Madrid-pm] Duda con use strict

Francisco Rivas franciscojrivash en gmail.com
Vie Abr 29 04:24:03 PDT 2011


Gracias!

Algo curioso, esto funciona :

foreach my $f_dir(@dirs) {
  if ($f_dir ne "folks" && $f_dir ne "test") {
    find(sub { push (@files_dir, $_) if -f},$f_dir);
    my $zip_filename = substr $f_dir,2,length($f_dir);
    print "Creating ".$zip_filename.".zip\n";
    my $obj = Archive::Zip->new();
    foreach my $f(@files_dir) {
      $obj->addFile($f_dir.'/'.$f);
    }
    if ($obj->writeToFileNamed($zip_filename.'.zip') != AZ_OK) {  # write to
disk
      print "Error in archive creation!";
    } else {
      print "Archive created successfully!";
    }
  }
  last;
}

No comprendo, pero esta resuelto como lo necesito.

Muy buen dia.


2011/4/29 Rafael Porres Molina <rafael.porres at qindel.com>

> El problema no parece venir del uso del pragma strict, sino de que te
> faltan/sobran (según se quiera ver) paréntesis en la primera condición:
>
> if ("$f_dir" ne "folks") and ("$f_dir" ne "test") {
>
>
> que deberías escribir
>
> if ( ("$f_dir" ne "folks") and ("$f_dir" ne "test") ) {
>
> o ya que estamos, sin esos paréntesis de más que no sirven para nada y esos
> entrecomillados de las variables que tampoco hacen nada ahora mismo, porque
> no parece tener mucho sentido interpolarlas :)
>
> if ($f_dir ne "folks" and $f_dir ne "test") {
>
> Este comentario sirve como regla general para el trozo de código que nos
> has mandado.
>
> Saludetes,
>
> Rafa
>
>  --
> Rafael Porres Molina
> Consultoría y Proyectos
> Qindel Formación y Servicios S.L.
>
> Móvil: (+34) 678650609
> e-mail: rafael.porres at qindel.com
> Dirección: c/Julián Camarillo 29, Edificio D2, 4ºIzda, 28037 Madrid, SPAIN
> / ESPAÑA
>
>
>
>
>
> El 29/04/2011, a las 12:35, Francisco Rivas escribió:
>
> Hola muy buen dia,
>
> Estoy escribiendo el script para modificar el XML (si el mismo del otro
> hilo) y ya casi esta listo todo lo que quiero pero tengo una duda debido a
> que estoy recibiendo estos mensajes :
>
> $ perl modify_xml.pl
> syntax error at modify_xml.pl line 72, near ") and"
> Global symbol "$f_dir" requires explicit package name at modify_xml.plline 74.
> Global symbol "$f_dir" requires explicit package name at modify_xml.plline 74.
> syntax error at modify_xml.pl line 85, near "}"
> Execution of modify_xml.pl aborted due to compilation errors.
>
> Por estas lineas :
>
> foreach my $f_dir(@dirs) {
>   if ("$f_dir" ne "folks") and ("$f_dir" ne "test") {
>     find(sub { push (@files_dir, $_) if -f},"$f_dir");
>     my $zip_filename = substr("$f_dir",2,length("$f_dir"));  #<- linea 74
>     print "Creating ".$zip_filename."\n";
>     my $obj = Archive::Zip->new();
>     foreach my $f(@files_dir) {
>       my $obj->addFile($f);
>     }
>     if ($obj->writeToFileNamed($zip_filename.'zip') != AZ_OK()) {  # write
> to disk
>       print "Error in archive creation!";
>     } else {
>       print "Archive created successfully!";
>     }
>   }
> }
>
> Lei en [1] que cuando usas strict debes poner entre comillas cuando quiero
> usar una variable como string. No estoy del todo seguro si lo estoy haciendo
> bien, alguno me podria aclarar donde si es que estoy usando mal las reglas
> de strict?. Estoy dejandome ?algo?
>
> Muchas gracias de antemano muy buen dia!
> _______________________________________________
> Madrid-pm mailing list
> Madrid-pm at pm.org
> http://mail.pm.org/mailman/listinfo/madrid-pm
>
>
>
>
>
> _______________________________________________
> Madrid-pm mailing list
> Madrid-pm at pm.org
> http://mail.pm.org/mailman/listinfo/madrid-pm
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/madrid-pm/attachments/20110429/849826c2/attachment-0001.html>


Más información sobre la lista de distribución Madrid-pm