• Viernes 29 de Marzo de 2024, 11:27

Mostrar Mensajes

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

Páginas: 1 2 [3]
51
Dudas informáticas / Re: C# Vs. Php - Webs
« en: Jueves 3 de Agosto de 2006, 00:14 »
Cita de: "JuanK"
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#?

52
Dudas informáticas / Re: C# Vs. Php - Webs
« en: Miércoles 2 de Agosto de 2006, 23:25 »
Cita de: "JuanK"
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?

53
Dudas informáticas / Re: C# Vs. Php - Webs
« en: Miércoles 2 de Agosto de 2006, 23:16 »
Cita de: "X.Cyclop"
¿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.

54
Perl / Re: Buscar Palabras En Un Arcivo
« 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.

55
Perl / Re: Directorio dinamico
« en: Domingo 9 de Julio de 2006, 04:18 »
Usa la función mkpath del módulo File::Path.

56
Perl / Re: intercalar lineas de archivos y contarlas
« en: Domingo 9 de Julio de 2006, 04:16 »
Código: Text
  1. #!/usr/bin/perl
  2.  
  3. my @fichero1 = do{ open F,"<fichero1.txt"; <F> };
  4. my @fichero2 = do{ open F,"<fichero2.txt"; <F> };
  5.  
  6. open INTER,">intercalado";
  7. open PARES,">pares";
  8. open IMPAR,">impar";
  9.  
  10. for( my $i = 0; $i < @fichero1; $i++ ) {
  11.  
  12.     # Salida intercalada
  13.     print INTER $fichero1[$i];
  14.     print INTER $fichero2[$i];
  15.  
  16.     # Salida de las pares
  17.     unless ( $i % 2 ) {
  18.         print PARES $fichero1[$i];
  19.         print PARES $fichero2[$i];
  20.     }
  21.  
  22.     # Salida de las impares
  23.     else {
  24.         print IMPAR $fichero1[$i];
  25.         print IMPAR $fichero2[$i];
  26.     }
  27. }
  28.  
  29. close PARES; close IMPAR; close INTER;
  30.  

57
Perl / Re: programa q no pare
« en: Domingo 9 de Julio de 2006, 03:24 »
Usando el demonio cron...

58
Perl / Re: iguales...
« 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:
Código: Text
  1.     1 #!/usr/bin/perl -l
  2.     2 $texto='mmm aaa mmm sss ss';
  3.     3 @partes=split(/ /,$texto);
  4.     4
  5.     5 foreach my $parte ( @partes ) {
  6.     6     next if $ya_visto{ $parte }++;
  7.     7     push @revisado, $parte;
  8.     8 }
  9.     9
  10.    10 print "@revisado";
  11.  
* 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.

59
Perl / Re: arreglos bidimensionales
« en: Domingo 9 de Julio de 2006, 02:58 »
Pues casi, casi como en C:
Código: Text
  1. @matriz = (
  2.     [ 0, 2, 3, 5, ],
  3.     [ 3, 5, 2, 0, ],
  4.     [ 5, 8, 2, 2, ],
  5. );
  6. print $matriz[1][1]; # 5
  7.  
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).

60
Perl / Re: obtener la hora del sistema
« 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:
Código: Text
  1. my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
  2.  
  3. $mon++;
  4. $year += 1900;
  5.  
  6. my $fecha = sprintf "%04d/%02d/%02d %02d:%02d",
  7.     $year, $mon, $mday, $hour, $min;
  8.  
Aunque siempre es mejor usar el módulo DateTime...
Código: Text
  1. > perl -le 'use DateTime; print DateTime->now->ymd("/")'
  2. 2006/07/09
  3.  

61
Perl / Re: Algun Experto En Perl Y Alma Caritativa ??
« en: Domingo 9 de Julio de 2006, 02:30 »
Como ha pasado bastante tiempo, se puede resolver...

Sea el fichero kk.txt
Citar
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:
Código: Text
  1. perl -nle '$n=$s=0;while(/(\d+)/g){ $s += $1; $n++} print "Suma: $s. Números: $n"' kk.txt
  2.  
Salida:
Citar
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
Citar
23
21
3
6
2
luego la siguiente una-línea saca el segundo ejercicio:
Código: Text
  1. perl -nle '$numero[$numero++]=$_; $suma+=$_; END{@ordenados= sort {$a <=> $b} @numero; print "@ordenados"; @ordenados=reverse @ordenados; print "@ordenados"; print $suma; print $numero}' kk.txt
  2.  
Salida:
Citar
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...

62
Perl / Re: Buscar Palabras En Un Arcivo
« en: Domingo 9 de Julio de 2006, 01:17 »
En una-línea:
Código: Text
  1. perl -nle 'while( /(#\d{6})/g ) { print $1 }' fichero.xpm
  2.  

63
Perl / Re: Tracking Con Perl
« 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.

64
Perl / Re: problemas con arreglos
« 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:
Código: Text
  1. @array[1] = 5;
  2.  
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
Código: Text
  1. use warnings;
  2.  
entonces recibiríamos un aviso así:
Citar
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:
Código: Text
  1. #!usr/bin/perl
  2. use warnings;
  3. use strict;
  4.  
  5. #defines valores al arreglo
  6. @arr[0..4] = (11, 12, 13, 14, 15);
  7.  
  8. #imprimes arreglo
  9. for( &#036;i=0; &#036;i&#60;5; &#036;i++) { print &#036;arr[&#036;i],&#34; &#34; }
  10.  

Como véis, sí podemos hacer una asignación de estas dos maneras:
Código: Text
  1. @arr[0..4] = (11, 12, 13, 14, 15);
  2. &#036;arr[0] = 11; &#036;arr[1] = 12; &#036;arr[2] = 13; # etc.
  3.  
pero no así:
Código: Text
  1. @arr[0] = 11; @arr[1] = 12; @arr[3] = 13; # etc.
  2.  

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:
Código: Text
  1. print &#34;@arr[1..3]&#092;n&#34;; # 12 13 14
  2.  

El uso de '@arr[0]=11;' sólo está permitido a partir del Perl6.

65
Perl / Re: Configuracion
« 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:
Código: Text
  1. perl -nle 'if ( m{^&#092;&#092;(.*)/&#036;} ) {print &#036;1}' archivo_para_ver
  2.  

66
Perl / Re: Pasar Resultado A Php
« 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...

67
Perl / Re: Un $ O Un Programa Para Extraerlo
« en: Sábado 8 de Julio de 2006, 23:40 »
Código: Text
  1. #!/usr/bin/perl -l
  2. use warnings;
  3. use strict;
  4.  
  5. my &#036;fichero = 'mensajes.txt';
  6. open my &#036;fh, '&#60;', &#036;fichero
  7.     or die &#34;ERROR: No pude abrir el fichero &#036;fichero: &#036;!&#092;n&#34;;
  8.  
  9. while ( my &#036;linea = &#60;&#036;fh&#62; ) {
  10.     chomp( &#036;linea );
  11.     if ( &#036;linea =~ /(&#092;w+) *: *(&#092;w+)/ ) {
  12.         print &#34;&#036;1 : &#036;2&#34;;
  13.     }
  14. }
  15.  
  16. close &#036;fh;
  17.  

68
Perl / Tutorial Interactivo. Perl Básico
« 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.

Páginas: 1 2 [3]