[Madrid-pm] Duda con use strict

Rafael Porres Molina rafael.porres en qindel.com
Vie Abr 29 05:15:35 PDT 2011


El 29/04/2011, a las 13:46, Francisco Rivas escribió:

> Ahora que lo veo con mas calma lo comprendo. Es que me fije en la primera linea que comentas pero luego cuando leo desde el "ya que estamos..." y veo la linea que me comentas lo comprendi. 
> 
> Rafael muchisimas gracias! :D

No problemo!

Un comentario adicional. Es posible q encuentres el módulo File::Find::Rule

http://search.cpan.org/~rclamp/File-Find-Rule-0.32/

bastante más fácil de utilizar que File::Find, que tiene un interfaz un tanto particular.

Por otra parte, creo que algunas de tus dudas de sintaxis encontrarán buenas respuestas en este libro (q te puedes descargar gratis):

http://www.onyxneon.com/books/modern_perl/index.html

No es largo, y cada una de sus páginas contiene enseñanzas realmente interesantes. A mi me hubiera encantado encontrarlo antes :)

Saludetes,

Rafa

-- 
Rafael Porres Molina
Consultoría y Proyectos
Qindel Formación y Servicios S.L.

Móvil: (+34) 678650609
e-mail: rafael.porres en qindel.com
Dirección: c/Julián Camarillo 29, Edificio D2, 4ºIzda, 28037 Madrid, SPAIN / ESPAÑA

> 
> 2011/4/29 Rafael Porres Molina <rafael.porres en qindel.com>
> ¿Qué es lo que no comprendes? :)
> 
> -- 
> Rafael Porres Molina
> Consultoría y Proyectos
> Qindel Formación y Servicios S.L.
> 
> Móvil: (+34) 678650609
> e-mail: rafael.porres en qindel.com
> Dirección: c/Julián Camarillo 29, Edificio D2, 4ºIzda, 28037 Madrid, SPAIN / ESPAÑA
> 
> 
> 
> 
> 
> El 29/04/2011, a las 13:24, Francisco Rivas escribió:
> 
>> 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 en 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 en 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.pl line 74.
>>> Global symbol "$f_dir" requires explicit package name at modify_xml.pl line 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 en pm.org
>>> http://mail.pm.org/mailman/listinfo/madrid-pm
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Madrid-pm mailing list
>> Madrid-pm en pm.org
>> http://mail.pm.org/mailman/listinfo/madrid-pm
>> 
>> _______________________________________________
>> Madrid-pm mailing list
>> Madrid-pm en pm.org
>> http://mail.pm.org/mailman/listinfo/madrid-pm
> 
> 
> 
> 
> _______________________________________________
> Madrid-pm mailing list
> Madrid-pm en pm.org
> http://mail.pm.org/mailman/listinfo/madrid-pm
> 
> _______________________________________________
> Madrid-pm mailing list
> Madrid-pm en pm.org
> http://mail.pm.org/mailman/listinfo/madrid-pm


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.pm.org/pipermail/madrid-pm/attachments/20110429/9da5cd80/attachment.html>


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