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: [email protected] Dirección: c/Julián Camarillo 29, Edificio D2, 4ºIzda, 28037 Madrid, SPAIN / ESPAÑA > > 2011/4/29 Rafael Porres Molina <[email protected]> > ¿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: [email protected] > 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 <[email protected]> >> 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: [email protected] >> 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 >>> [email protected] >>> http://mail.pm.org/mailman/listinfo/madrid-pm >> >> >> >> >> _______________________________________________ >> Madrid-pm mailing list >> [email protected] >> http://mail.pm.org/mailman/listinfo/madrid-pm >> >> _______________________________________________ >> Madrid-pm mailing list >> [email protected] >> http://mail.pm.org/mailman/listinfo/madrid-pm > > > > > _______________________________________________ > Madrid-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/madrid-pm > > _______________________________________________ > Madrid-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/madrid-pm
_______________________________________________ Madrid-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/madrid-pm
