No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Perl

22/29
Recursos

Aportes 65

Preguntas 6

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

wow, nunca hab铆a visto nada de c贸digo de este lenguaje hasta esta clase, gracias beco!

Pero no hay curso de Perl en Platzi. 馃槬 Jaja

Si necesitan declarar la equivalencia de string en perl tenemos que usar eq

Ejemplo:

if ($local eq "Venezuela") {
#...
}

Para Perl:
Todas las expresiones regulares van entre dos diagonales /miExpresionRegular/

Ejemplos:

  • Cada partido que se hizo en febrero: ^[\d]{4,4}\-02-.*$
  • Cada vez que gan贸 el visitante: ^[\d]{4,4}.*?,(.*?),(.*?),(\d+),(\d+),.*$ -> lo podemos imprimir en Perl como:
if(m/^[\d]{4,4}.*?,(.*?),(.*?),(\d+),(\d+),.*$/) {
  if ($4 > $3) {
    printf("%s (%d) - (%d) %s\n", $1, $3, $4, $2);
      # $1 es el equipo local
      # $2 es el equipo visitante
      # $3 es el marcador del equipo local
      # $4 es el marcador del equipo visitante
  }
  $match++;
}
  • Lo mismo pero ahora a帽adimos el a帽o del partido: ^([\d]{4,4})\-.*?,(.*?),(.*?),(\d+),(\d+),.*$ -> Lo mostramos as铆:
if(m/^([\d]{4,4})\-.*?,(.*?),(.*?),(\d+),(\d+),.*$/) {
    if ($5 > $4) {
      printf("%s: %s (%d) - (%d) %s\n", $1, $2, $4, $5, $3);
      # $1 es la fecha
      # $2 es el equipo local
      # $3 es el equipo visitante
      # $4 es el marcador del equipo local
      # $5 es el marcador del equipo visitante
    }
    $match++;
  }

Es genial esto! Aunque no utilice PERL te das cuenta de como puedes aplicarlo para otros lenguajes

Hola
Para ayudarme con los comandos y ejecuciones en Windows uso GIT bash, por si alguien ocupa.

uff鈥 da gusto ver a @beco escribiendo c贸digo, se ve que es un experto sin duda alguna y sabe ense帽ar鈥 mostro!

Me encanta de perl este tipo de cosas:

or die

Si ese lenguaje estuviese de moda actualmente, no me quiero imaginar la cantidad de memes.

otra forma de trabajar con expresiones regulares y perl:

$ cat parsea.pl
#!/usr/bin/perl


use warnings;
my $t = time;
$match = 0;
$nomatch = 0;



open (CMD,"./result.csv");


while ($line = <CMD>) {
        if ($line =~ /^(\d+\-\d+\-\d+),(.*),(.*),(\d+),(\d+),(.*),(.*),(.*),(TRUE|FALSE)/) {
                $date=$1;
                $home_team=$2;
                $away_team=$3;
                $home_score=$4;
                $away_score=$5;
                $tournament=$6;
                $city=$7;
                $country=$8;
                $neutral=$9;
                if ($home_score > $away_score) {
                        $year = $date;
                        $year =~ s/(\d+)\-\d+\-\d+/$1/;
                        print "$year - $home_team ($home_score) - $away_team ($away_score)\n";
                }
                #print "*$line";
                $match++;
        } else {
                #print $line;
                $nomatch++;
        }


}

print "se encontraron $match\n";
print "no se encontraron $nomatch\n";
print "tardo:".(time()-$t)."\n";

esta parte es muy interesante:

 $year =~ s/(\d+)\-\d+\-\d+/$1/;

uso una expresion regular para extraer el a帽o

espero les sirva

  • Match para expresiones regulares en Perl:
m/regex/
  • C贸digo para obtener partidos jugados en febrero:
#!/usr/bin/perl

use strict;
use warnings;

my $t = time;

open(my $f, "<../regex/results.csv") or die("no hay archivo");

my $match = 0;
my $nomatch = 0;

while(<$f>) {
	chomp; # omite saltos de linea y otros caracteres
	# 2018-06-04,Italy,Netherlands,1,1,Friendly,Turin,Italy,FALSE
    # m --> match 
    # en pearl: /regex/
    if(m/^[\d]{4,4}\-02\-.*$/){
        printf $_."\n";
        $match++;
    } else{
        $nomatch++;
    }

}

close($f);

printf("Se encontraron \n - %d matches\n - %d no matches\ntardo %d segundos\n"
	, $match, $nomatch, time() - $t);
  • C贸digo para obtener los partidos en los que ganan los visitantes:
#!/usr/bin/perl

use strict;
use warnings;

my $t = time;

open(my $f, "<../regex/results.csv") or die("no hay archivo");

my $match = 0;
my $nomatch = 0;

while(<$f>) {
	chomp;

	if(m/^([\d]{4,4}).*?,(.*?),(.*?),(\d+),(\d+),.*$/){
		if($5 > $4) {
			printf("%s: %s (%d) - (%d) %s\n",
				$1, $2, $4, $5, $3
			);
		}
	    $match++;
	} else {
		$nomatch++;
	}
}

close($f);

printf("Se encontraron \n - %d matches\n - %d no matches\ntardo %d segundos\n"
	, $match, $nomatch, time() - $t);

Primera vez que miro c贸digo de perl jaja
un gran ejemplo y medio confuso lo de las variables, aun que en los comentarios vi como se lidia con eso, la rapidez con la que se itera sobre el archivo completo es impresionante

Desde perl.org pueden buscar indicaciones para descargar Perl en tu sistema operativo. Me sorprendi贸 que Linux y MacOS lo tuvieran instalado por defecto.
Escribiendo perl -v en la terminal de Linux se puede saber qu茅 versi贸n se est谩 usando.

Esto est谩 genial!!

#!/usr/bin/perl

use strict;
use warnings;

my $t = time;

open(my $f, 鈥<./results.csv鈥) or die (鈥渘o hay archivo鈥);

my $match = 0;
my $nomatch = 0;

while(<$f>) {
chomp;
if(m/^([\d]{4,4})-.?,(.?),(.?),(\d+),(\d+),.$/) {
if($5 > $4) {
printf("%s: %s (%d) - (%d) %s\n", $1, $2, $4, $5, $3);
}
# print $_."\n";
$match++;
} else {
$nomatch++;
}
}

close($f);

printf(鈥淪e encontraron matches: \n - %d matches\n - %d no matches\ntardo %d segundos\n鈥,
$match, $nomatch, time() - $t );

Admirable el trabajo de Beco al mostrar el poder de este lenguaje con las expresiones regulares.

Lo realice sin escapar el d铆gito inicial como si fuera una clase y obtuve el resultado, creo que no es del todo necesario escaparlo.

<code>
if(m/^\d{4,4}\-02\-.*$/) {

definitivamentes las regex son parte indispansable para nuestro crecimiento pro!!

Super ese lenguaje, ser墨a genial tener un curso de este

su consola parece matrix

Las expresiones regulares en Perl inician con una letra que indica la accion a ejecutar, por ejemplo, m para matches

Excelente clase. Muy buen lenguaje de programacion!

23 minutos 馃珷

Perl me parece un lenguaje muy potente, para realizar an谩lisis y valides de datos de manera r谩pida y compleja. En potencia podr铆a compararse talvez con Python.

Estoy muy impresionado de haber aprendido el uso de perl para las expresiones regulares. No sabia nada al principio e incluso daba por perdido el uso del codigo, pero ahora que me quedo claro estoy impresionado de la ense帽aza del profe ahora si me quedo clarisimo. A seguir aprendiendo.

Aqui encontraremos mas datos interesantes sobre epoch

jejejejej

Bien por los galeses

Imprimir todos los partidos de la historia del futbol que han sido jugados en febrero

primera vez que veo PERL y no me disgusta

Definitivamente me quito el sombrero ante este curso. 隆Grande!

Platzi saco un curso de COBOL, as铆 que estar铆a genial uno de Perl, y puesto a pedir鈥 Porque no uno de REXX鈥 馃槀

Perl 馃惇 es un excelente lenguaje鈥 De eso no hay duda.

Probe hacer la misma funcionalidad del c贸digo en dart.

Perl es muy parecido a C++. Nunca me habit tocado ver C贸digo Perl hasta esta clase xp

Al principio me hab铆a parecido aburrido y no le encontraba utilidad a REGEX pero wow, es incre铆blemente 煤til

0 segundos

Incre铆ble, pero se nota la potencia que tiene esta herramienta鈥

驴Alguien m谩s not贸 un error de edici贸n del video a partir del minuto 6:59?

2 Segundos 馃槮

mas que interesanton perl! y sobre todo lo aplicado en este curso con las expresiones regulares!

Qu茅 genial como encuentra todo, Perl tiene un parecido cercano a C.

Es la primera vez que veo el lenguaje.

SUPERFAST

Que maravilla

Increible

No conocia este lenguaje, pero se ve bien interesante para usar

Viendo esta clase se me ocurrieron muchas aplicaciones para mi trabajo. No entend铆a el poder de las expresiones regulares.

Son excelentes las REGEX

genial

Busqu茅 cursos de Perl, pero no me arroj贸 ninguno. 驴Alg煤n motivo? Xb

Ahora quiero aprender Perl 馃槃

Excelente explicaci贸n, se pudo observar el gran potencial de las expresiones regulares sobre todo este conjunto de datos para organizarlos r谩pidamente.

"Atom se pone loco, me choca"
jajajaj

Cu谩l ser铆a su expresi贸n regular para tomar todos los partidos de su pa铆s?
Y luego capturar: a帽o, pa铆s a, pa铆s b y resultados. Luego mostrarlo en alg煤n lenguaje, cu谩ntas variables hay? $1, $2, $3 鈥 $10, 鈥?
Mi primer intento:

^(\d{4,4})\-.*?,(((.*[Pp]eru.*),(.*?))|((.*?),(.*[Pp]eru.*))),(\d+),(\d+),.*$

Si Perl no se usa actualmente, el porque los otros lenguajes lo han superado en interactividad, pero si con Perl este tipo de trabajos se hacen el menos de un segundos, me imagino los lenguajes como Python haciendo lo mismo en microsegundos.

No conozco Perl, pero esta clase me despert贸 curiosidad por aprenderlo

Para trabajar en perl, uso una application open que se llama Cygwin;
Cygwin es un entorno de ejecuci贸n y programaci贸n para Windows.
Es Unix-Like y se puede instalar muchos paquetes del mundo linux鈥 ahi instale perl, (a veces tambien python, gpp, g++, gcc, imagemagick, wget etc鈥) y funciona genial.
Pueden echarle un vistazo si gustan.

Me impresiona la potencia que tienen las expresiones regulares con archivos tan grandes.

No conoc铆a Perl pero sin duda es bastante potente

El 铆ndice de los conjuntos es ascendente y empieza desde 1, asignados de izquierda a derecha.
Ej.:

^[\d]{4,4}\-.*?,(.*?),(\w.*?),(\d+),.*$

(.?) = $1, (\w.?) = $2, (\d+) = $3

^([\d]{4,4})\-.*?,(.*?),(\w.*?),(\d+),.*$

([\d]{4,4}) = $1, (.?) = $2, (\w.?) = $3, (\d+) = $4

En la 煤ltima parte le salen 39008 matches porque al agregar la condici贸n deseada no movi贸 la variable que cuenta el # de matches dentro de la misma:

$match++;

Deber铆a ir dentro del if y fuera del mismo el $nomatch:

if($4 > $3) {
	printf("%s (%d) - (%d) %s\n", $1, $3, $4, $2);
	$match++;
}
$nomatch++;

No s茅 Perl, pero qu茅 bonito se ve escrito xD, de igual manera se entiende bastante la sintaxis porque felizmente antes llev茅 la introducci贸n a C y luego tambi茅n a C++:

Insertar meme de: 鈥淒o I detect C in this languaje?鈥

Perl es un lenguaje que hasta la fecha sigue siendo utilizado para fines de scripting, hay que tenerle respeto aunque no lo lleguemos a utilizar.