|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - explorer
51
« en: Jueves 3 de Agosto de 2006, 01:37 »
4- indexers Según veo, indexer es lo que ahora se llama iterator.
52
« en: Jueves 3 de Agosto de 2006, 00:14 »
1- Gestion de memoria como la de .net o java 2- Poseer la habilidad de generar codigocon un CLI como .net 3- sobrecarga de metodos 4- indexers 5- generics 6- application domains Pues siento decírtelo... pero de todo eso ya lo tiene Perl... tendrás que buscar otros ejemplos... a propósito... ¿se puede hacer currying en C#?
53
« en: Miércoles 2 de Agosto de 2006, 23:25 »
Lo que pasa es que segun yo... aperl le falta mucho para brindar toda las funcionalidades que ofrece el .net framework, lo cual no implca que perl sea malo... solo que se quedo atras. Esto es muy importante... ¿cuáles funcionalidades le faltan?
54
« en: Miércoles 2 de Agosto de 2006, 23:16 »
¿Cuál es mejor para webs? Yo creo que depende del tamaño del web que quieras hacer... y de los lenguajes que domines... Si necesitas algo muy pequeño con PHP, Ruby, Python o un simple CGI::Application en Perl te puede servir. Si necesitas hacer algo de tamaño medio, puedes elegir una producto ya prefabricado de los centenares que hay. o usar un framework en PHP, Python, Ruby on Rails, Maypole o Catalyst, webgui o muchos más. Si lo quieres hacer tu mismo, todos los lenguajes te dan buenas soluciones. Actualmente en PHP hay más soluciones, pero requieren atención a la seguridad. El problema viene si el proyecto es grande, porque entonces necesitas pasar a un modelo MVC, por lo que PHP es poco adecuado, salvo que utilices un framework de plantillas, como el smarty. En cuanto a qué lenguaje utilizar, todos tienen buenas soluciones y documentación... al final, casi son gustos personales lo que influyen.
55
« en: Domingo 9 de Julio de 2006, 04:26 »
No te merece la pena usar PDL para cosas pequeñas... si la imagen tuviera decenas de miles de puntos de ancho y alto, entonces si... pero resulta entonces que para procesar imágenes, PDL usa las herramientas incluídas en el paquete netpbm.
En estos casos, es mejor usar ImageMagick.
56
« en: Domingo 9 de Julio de 2006, 04:18 »
Usa la función mkpath del módulo File::Path.
57
« en: Domingo 9 de Julio de 2006, 04:16 »
#!/usr/bin/perl my @fichero1 = do{ open F,"<fichero1.txt"; <F> }; my @fichero2 = do{ open F,"<fichero2.txt"; <F> }; open INTER,">intercalado"; open PARES,">pares"; open IMPAR,">impar"; for( my $i = 0; $i < @fichero1; $i++ ) { # Salida intercalada print INTER $fichero1[$i]; print INTER $fichero2[$i]; # Salida de las pares unless ( $i % 2 ) { print PARES $fichero1[$i]; print PARES $fichero2[$i]; } # Salida de las impares else { print IMPAR $fichero1[$i]; print IMPAR $fichero2[$i]; } } close PARES; close IMPAR; close INTER;
58
« en: Domingo 9 de Julio de 2006, 03:24 »
Usando el demonio cron...
59
« en: Domingo 9 de Julio de 2006, 03:23 »
Todo lo que tenga que ver con repetición, es una caso muy bueno para usar los hashes: 1 #!/usr/bin/perl -l 2 $texto='mmm aaa mmm sss ss'; 3 @partes=split(/ /,$texto); 4 5 foreach my $parte ( @partes ) { 6 next if $ya_visto{ $parte }++; 7 push @revisado, $parte; 8 } 9 10 print "@revisado";
* Hacemos un bucle por cada uno (foreach) de los elementos de @partes. * En la línea 6 decimos que si ya lo hemos visto, pase al siguiente elemento. Explicación: Cada $parte se introduce en la memoria asociativa %ya_visto con un valor que va creciendo (la primera vez será un 0 lo que se reciba en el if, por lo que la $parte termina guardandose (push) en @revisado. Pero si es una $parte repetida, entonces devolverá un uno (o dos o tres...) con lo que se activa el next y no se guarda.
60
« en: Domingo 9 de Julio de 2006, 02:58 »
Pues casi, casi como en C: @matriz = ( [ 0, 2, 3, 5, ], [ 3, 5, 2, 0, ], [ 5, 8, 2, 2, ], ); print $matriz[1][1]; # 5
Nota: la última línea en realidad es $matriz[1]->[1], pero en Perl podemos 'comernos' la flecha siempre que se encuentre entre dos subíndices (sean arrays o hashes).
61
« en: Domingo 9 de Julio de 2006, 02:49 »
Con el sprintf, que es como si pintaras, pero en vez de pantalla, a una variable: my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $mon++; $year += 1900; my $fecha = sprintf "%04d/%02d/%02d %02d:%02d", $year, $mon, $mday, $hour, $min;
Aunque siempre es mejor usar el módulo DateTime... > perl -le 'use DateTime; print DateTime->now->ymd("/")' 2006/07/09
62
« en: Domingo 9 de Julio de 2006, 02:30 »
Como ha pasado bastante tiempo, se puede resolver... Sea el fichero kk.txt 23 0 21 34 4566 3 5 3 3 3 3 3 3 3 3 2 3 luego la siguiente una-línea saca el primer ejercicio: perl -nle '$n=$s=0;while(/(\d+)/g){ $s += $1; $n++} print "Suma: $s. Números: $n"' kk.txt
Salida: Suma: 23. Números: 2 Suma: 4621. Números: 3 Suma: 11. Números: 3 Suma: 21. Números: 7 Suma: 5. Números: 2 Para el segundo ejercicio. Si tenemos el fichero kk.txt 23 21 3 6 2 luego la siguiente una-línea saca el segundo ejercicio: perl -nle '$numero[$numero++]=$_; $suma+=$_; END{@ordenados= sort {$a <=> $b} @numero; print "@ordenados"; @ordenados=reverse @ordenados; print "@ordenados"; print $suma; print $numero}' kk.txt
Salida: 2 3 6 21 23 23 21 6 3 2 55 5 Queda para el alumno la tarea de explicarle al profesor cómo funcionan estas soluciones...
63
« en: Domingo 9 de Julio de 2006, 01:17 »
En una-línea: perl -nle 'while( /(#\d{6})/g ) { print $1 }' fichero.xpm
64
« en: Domingo 9 de Julio de 2006, 01:13 »
Una forma sencilla de hacerlo sería: ya que sabemos cuándo ha entrado en una página (porque aparece en el registro de actividad del servidor web), lo que necesitamos saber es cuándo se ha ido. Para ello, podemos usar el evento OnUnload del <body> para que haga una determinada petición al servidor web, de tal forma que sepamos que el usuario ha abandona una página.
65
« en: Domingo 9 de Julio de 2006, 01:08 »
Es un error muy común de los programadores de Perl, confundir el uso de la '@' y del '$' en los arrays. Una '@' hace referencia a un array, desde luego... pero al array en su conjunto. Si sólo queremos acceder a un sólo elemento, estamos queriendo acceder a un escalar, por lo que estamos obligados a usar el '$'. En esta línea: lo que estamos haciendo es: 1.- dado que existe una '@' delante de 'array', Perl convierte a '5' en un array (de un sólo elemento, claro). 2.- Perl coge todos los elementos de ese nuevo array y los distribuye por los elementos de @array indicados por los índices que están entre corchetes. En este caso, sólo hay un '1', por lo que coge el primer elemento del nuevo array (el '5') y lo mete en la posición segunda ([1]) del @array. Si en las primeras líneas del programa tuvieramos la costumbre de poner entonces recibiríamos un aviso así: Scalar value @arr[1] better written as $arr[1] at -e line 1. Vamos a modificar el ejemplo propuesto por azzwad para intentar verlo mejor: #!usr/bin/perl use warnings; use strict; #defines valores al arreglo @arr[0..4] = (11, 12, 13, 14, 15); #imprimes arreglo for( $i=0; $i<5; $i++) { print $arr[$i]," " }
Como véis, sí podemos hacer una asignación de estas dos maneras: @arr[0..4] = (11, 12, 13, 14, 15); $arr[0] = 11; $arr[1] = 12; $arr[2] = 13; # etc.
pero no así: @arr[0] = 11; @arr[1] = 12; @arr[3] = 13; # etc.
El uso del '@' debe quedar restringido sólo en el caso de que queramos hacer referencia a más de un elemento. Ejemplo: si queremos pintar los elementos que van desde la posición 1 a la 3 entonces haríamos: print "@arr[1..3]\n"; # 12 13 14
El uso de '@arr[0]=11;' sólo está permitido a partir del Perl6.
66
« en: Sábado 8 de Julio de 2006, 23:52 »
Si... pero no se dicé qué es lo que hay que hacer con ese objeto... Si sólo queremos quedarnos con esos objetos entonces los podemos extraer con este una-línea: perl -nle 'if ( m{^\\(.*)/$} ) {print $1}' archivo_para_ver
67
« en: Sábado 8 de Julio de 2006, 23:44 »
Con el módulo CGI es muy fácil generar el código html de una página.
Si aún así quieres que el script en Perl llame a una página php, puedes hacer un Location en el cgi, en cuya URL irán los parámetros, en formato GET.
Es una opción, pero hay más...
68
« en: Sábado 8 de Julio de 2006, 23:40 »
#!/usr/bin/perl -l use warnings; use strict; my $fichero = 'mensajes.txt'; open my $fh, '<', $fichero or die "ERROR: No pude abrir el fichero $fichero: $!\n"; while ( my $linea = <$fh> ) { chomp( $linea ); if ( $linea =~ /(\w+) *: *(\w+)/ ) { print "$1 : $2"; } } close $fh;
69
« en: Sábado 8 de Julio de 2006, 23:13 »
Después del éxito de la primera sesión ya está anunciada la segunda para el día 10 de julio de 2006, a las 21:00 GMT. Más información: Tutorial Interactivo. Perl Básico 2.
|
|
|