From leninmhs at gmail.com Thu Jul 12 08:17:03 2012 From: leninmhs at gmail.com (=?UTF-8?Q?Lenin_Hern=C3=A1ndez?=) Date: Thu, 12 Jul 2012 10:47:03 -0430 Subject: [caracas-pm] =?utf-8?q?Expresi=C3=B3n_regular_between?= Message-ID: Saludos, ando buscando una expresi?n regular que capture todo desde un car?cter hasta otro (inicio y fin) incluyendo dichos caracteres, es decir tengo una cadena = "perl monger (xyz123) caracas" busco capturar o quitar todo lo que esta dentro de los par?ntesis ( ) incluyendo los propios par?ntesis He intentado $cadena =~ s{[()]}{}g; lo cual me deja xyz123 tambi?n intente $cadena =~ s{[(,)]}{}g; $cadena =~ s{[(.*)]}{}g; $cadena =~ s{[(.*?)]}{}g; obteniendo los mismos resultados La expresi?n me deber?a poder servir para para capturar otros patrones de la misma forma es decir los que este en [xyz123] o #xyz123# Saludos y gracias por las respuestas!! -- Lenin Hern?ndez Twitter: @leninmhs 2.6.32 on Debian Wheezy CUCLUG.: "no hay nada mejor, que hacer lo que realmente te gusta". Linus Tordvalds.: "If it compiles, it is good, if it boots up it is perfect". From fobispo at isc.org Thu Jul 12 08:44:48 2012 From: fobispo at isc.org (Francisco Obispo) Date: Thu, 12 Jul 2012 08:44:48 -0700 Subject: [caracas-pm] =?iso-8859-1?q?Expresi=F3n_regular_between?= In-Reply-To: References: Message-ID: <138011C5-948F-456F-8DC8-1B197F470D7D@isc.org> $cadena = "perl monger (xyz123) caracas"; $cadena =~ m/.*?\((.*?)\).*?$/; print $1; el par?ntesis en las expresiones regulares sirve para agrupar las expresiones, y guardar su contenido en variables din?micas: $1 ... $n si quieres hacer un match dentro de par?ntesis, debes asegurarte que ?stos sean considerados como texto y no como parte de la expresi?n..para eso usa: \( y \) .*? -> hace match de todo, aunque no lo usar?a en un string muy grande, pues corres el riesgo de capturar mas de lo que deseas, usar mas memoria y de paso consumir mas CPU. te recomiendo que leas el manual de expresiones regulares de perl: perldoc perlre tambien hay buenos libros al respecto. saludos On Jul 12, 2012, at 8:17 AM, Lenin Hern?ndez wrote: > Saludos, ando buscando una expresi?n regular que capture todo desde un > car?cter hasta otro (inicio y fin) incluyendo dichos caracteres, > es decir tengo una cadena = "perl monger (xyz123) caracas" busco > capturar o quitar todo lo que esta dentro de los par?ntesis ( ) > incluyendo los propios par?ntesis > > He intentado $cadena =~ s{[()]}{}g; > lo cual me deja xyz123 > > tambi?n intente > $cadena =~ s{[(,)]}{}g; > $cadena =~ s{[(.*)]}{}g; > $cadena =~ s{[(.*?)]}{}g; > obteniendo los mismos resultados > > > La expresi?n me deber?a poder servir para para capturar otros patrones > de la misma forma es decir los que este en [xyz123] o #xyz123# > > Saludos y gracias por las respuestas!! > > -- > Lenin Hern?ndez > Twitter: @leninmhs > 2.6.32 on Debian Wheezy > CUCLUG.: "no hay nada mejor, que hacer lo que realmente te gusta". > Linus Tordvalds.: "If it compiles, it is good, if it boots up it is perfect". > _______________________________________________ > caracas-pm mailing list > caracas-pm at pm.org > http://mail.pm.org/mailman/listinfo/caracas-pm Francisco Obispo email: fobispo at isc.org Phone: +1 650 423 1374 || INOC-DBA *3557* NOC PGP KeyID = B38DB1BE From leninmhs at gmail.com Thu Jul 12 09:12:56 2012 From: leninmhs at gmail.com (=?UTF-8?Q?Lenin_Hern=C3=A1ndez?=) Date: Thu, 12 Jul 2012 11:42:56 -0430 Subject: [caracas-pm] =?utf-8?q?Expresi=C3=B3n_regular_between?= In-Reply-To: <138011C5-948F-456F-8DC8-1B197F470D7D@isc.org> References: <138011C5-948F-456F-8DC8-1B197F470D7D@isc.org> Message-ID: Muchas gracias por la respuesta, explicaci?n y recomendaci?n, la expresi?n sigue arrojando el mismo resultado que tenia > $cadena = "perl monger (xyz123) caracas"; > $cadena =~ m/.*?\((.*?)\).*?$/; > print $1; retorna: xyz123 sin incluir los propios par?ntesis, incluso probando otra combinaci?n de caracteres como patron ejemplo: # = $cadena = "perl monger #xyz123= caracas"; $cadena =~ m/.*?#(.*?)=.*?$/; print $1; sigue capturando xyz123 sin incluir los caracteres del between deseado -- Lenin Hern?ndez Twitter: @leninmhs 2.6.32 on Debian Wheezy CUCLUG.: "no hay nada mejor, que hacer lo que realmente te gusta". Linus Tordvalds.: "If it compiles, it is good, if it boots up it is perfect". From fobispo at isc.org Thu Jul 12 09:23:25 2012 From: fobispo at isc.org (Francisco Obispo) Date: Thu, 12 Jul 2012 09:23:25 -0700 Subject: [caracas-pm] =?iso-8859-1?q?Expresi=F3n_regular_between?= In-Reply-To: References: <138011C5-948F-456F-8DC8-1B197F470D7D@isc.org> Message-ID: <507A85CD-034A-40EB-9FEA-224D85A465CC@isc.org> Si quieres capturar los par?ntesis usa: $cadena=~ m/.*?(\(.*?\)\).*?/; On Jul 12, 2012, at 9:12 AM, Lenin Hern?ndez wrote: > Muchas gracias por la respuesta, explicaci?n y recomendaci?n, la > expresi?n sigue arrojando el mismo resultado que tenia > >> $cadena = "perl monger (xyz123) caracas"; >> $cadena =~ m/.*?\((.*?)\).*?$/; >> print $1; > > retorna: xyz123 sin incluir los propios par?ntesis, > > incluso probando otra combinaci?n de caracteres como patron ejemplo: # = > > $cadena = "perl monger #xyz123= caracas"; > $cadena =~ m/.*?#(.*?)=.*?$/; > print $1; > > > sigue capturando xyz123 sin incluir los caracteres del between deseado > > > > -- > Lenin Hern?ndez > Twitter: @leninmhs > 2.6.32 on Debian Wheezy > CUCLUG.: "no hay nada mejor, que hacer lo que realmente te gusta". > Linus Tordvalds.: "If it compiles, it is good, if it boots up it is perfect". Francisco Obispo email: fobispo at isc.org Phone: +1 650 423 1374 || INOC-DBA *3557* NOC PGP KeyID = B38DB1BE From leninmhs at gmail.com Thu Jul 12 13:04:11 2012 From: leninmhs at gmail.com (=?UTF-8?Q?Lenin_Hern=C3=A1ndez?=) Date: Thu, 12 Jul 2012 15:34:11 -0430 Subject: [caracas-pm] =?utf-8?q?Expresi=C3=B3n_regular_between?= In-Reply-To: <507A85CD-034A-40EB-9FEA-224D85A465CC@isc.org> References: <138011C5-948F-456F-8DC8-1B197F470D7D@isc.org> <507A85CD-034A-40EB-9FEA-224D85A465CC@isc.org> Message-ID: > Si quieres capturar los par?ntesis usa: > > $cadena=~ m/.*?(\(.*?\)\).*?/; Daba: Unmatched ( in regex; marked by <-- HERE in m/.*?( <-- HERE \(.*?\)\).*?/ at recorre.pl line 42. un / estaba de mas quedando as?: $campo[2]=~ m/.*?(\(.*?\)).*?/; Funciono correctamente capturando (xyz123) incluyendo los par?ntesis Ciertamente el truco estaba en el escape de par?ntesis para que los tomara como texto y no como una agrupaci?n de RE de perl cayendo en cuenta y entendiendo mejor como lo estaba haciendo lo deje as?: $cadena =~ m/(\(.*\))/; que me retorna igualmente (xyz123) el *? si me consum?a pr?cticamente el 100% del procesador hice la prueba con time usando *? = real 0m6.583s y usando solo * = real 0m6.130s (60mil lineas usando equipo modesto) y para sacarlo (xyz123) de la cadena original use: $cadena =~ s/\(.*\)//; quedando cadena entonces: "perl monger caracas" Gracias por la informaci?n y tiempo Saludos!! -- Lenin Hern?ndez Twitter: @leninmhs 2.6.32 on Debian Wheezy CUCLUG.: "no hay nada mejor, que hacer lo que realmente te gusta". Linus Tordvalds.: "If it compiles, it is good, if it boots up it is perfect". From lem at itverx.com.ve Thu Jul 12 13:28:21 2012 From: lem at itverx.com.ve (=?iso-8859-1?Q?Luis_Mu=F1oz?=) Date: Thu, 12 Jul 2012 16:28:21 -0400 Subject: [caracas-pm] =?iso-8859-1?q?Expresi=F3n_regular_between?= In-Reply-To: References: <138011C5-948F-456F-8DC8-1B197F470D7D@isc.org> <507A85CD-034A-40EB-9FEA-224D85A465CC@isc.org> Message-ID: On Jul 12, 2012, at 4:04 PM, Lenin Hern?ndez wrote: > $cadena =~ m/(\(.*\))/; > que me retorna igualmente (xyz123) > > el *? si me consum?a pr?cticamente el 100% del procesador hice la > prueba con time > > usando *? = real 0m6.583s > y usando solo * = real 0m6.130s > (60mil lineas usando equipo modesto) Si quieres ser m?s r?pido, haz esto $cadena =~ m{(\([^\)]*\))}; En un regexp, '.' hace match con cualquier caracter. Esto significa que el motor de expresiones regulares va a consumir toda la entrada hasta el final y luego, comenzar? a "echar para atr?s" (backtracking) hasta que encuentre el ')'. Usando la construcci?n que mostr? m?s arriba, el motor de expresiones regulares va a consumir la entrada mientras no encuentre el ')'. Si tienes mucho texto despu?s de lo que est?s buscando, esta opci?n va a ser la mejor. Saludos -lem From fobispo at isc.org Thu Jul 12 13:45:11 2012 From: fobispo at isc.org (Francisco Obispo) Date: Thu, 12 Jul 2012 13:45:11 -0700 Subject: [caracas-pm] =?iso-8859-1?q?Expresi=F3n_regular_between?= In-Reply-To: References: <138011C5-948F-456F-8DC8-1B197F470D7D@isc.org> <507A85CD-034A-40EB-9FEA-224D85A465CC@isc.org> Message-ID: Exacto, ahora, si lo que quieres es descartar lo que esta entre (), entonces no uses () en la expresi?n regular, pues estas consumiendo mas recursos de lo que necesitas. as? que algo como: $cadena =~ s{\([^\)]*\)}{}g; ser?a suficiente y mas eficiente, pues no crear?as una referencia a $1..$n. saludos On Jul 12, 2012, at 1:28 PM, Luis Mu?oz wrote: > > On Jul 12, 2012, at 4:04 PM, Lenin Hern?ndez wrote: > >> $cadena =~ m/(\(.*\))/; >> que me retorna igualmente (xyz123) >> >> el *? si me consum?a pr?cticamente el 100% del procesador hice la >> prueba con time >> >> usando *? = real 0m6.583s >> y usando solo * = real 0m6.130s >> (60mil lineas usando equipo modesto) > > Si quieres ser m?s r?pido, haz esto > > $cadena =~ m{(\([^\)]*\))}; > > En un regexp, '.' hace match con cualquier caracter. Esto significa que el motor de expresiones regulares va a consumir toda la entrada hasta el final y luego, comenzar? a "echar para atr?s" (backtracking) hasta que encuentre el ')'. Usando la construcci?n que mostr? m?s arriba, el motor de expresiones regulares va a consumir la entrada mientras no encuentre el ')'. Si tienes mucho texto despu?s de lo que est?s buscando, esta opci?n va a ser la mejor. > > Saludos > > -lem Francisco Obispo email: fobispo at isc.org Phone: +1 650 423 1374 || INOC-DBA *3557* NOC PGP KeyID = B38DB1BE From caracas1348 at yahoo.com Fri Jul 20 14:27:28 2012 From: caracas1348 at yahoo.com (Andy Vasquez) Date: Fri, 20 Jul 2012 21:27:28 +0000 (UTC) Subject: [caracas-pm] =?utf-8?q?Invitaci=C3=B3n_a_conectarnos_en_LinkedIn?= Message-ID: <97723078.9211745.1342819648004.JavaMail.app@ela4-bed79.prod> LinkedIn ------------ Perl Mongers Caracas: Me gustar?a a?adirte a mi red profesional en LinkedIn. -Andy Andy Vasquez PROGRAMADOR Venezuela Confirma que conoces a Andy Vasquez: https://www.linkedin.com/e/nk6ddd-h4vs5bls-5j/isd/7937899468/8y6taQRG/?hs=false&tok=3gG9-GkDQDvRk1 -- Est?s recibiendo invitaciones a conectar. Haz clic para darte de baja: http://www.linkedin.com/e/nk6ddd-h4vs5bls-5j/2TXPLkhmrQSKDbdst7TR6Bs-aUWq/goo/caracas-pm%40pm%2Eorg/20061/I2678761936_1/?hs=false&tok=3FjYacGMMDvRk1 (c) 2012 LinkedIn Corporation. 2029 Stierlin Ct, Mountain View, CA 94043, EE.UU. -------------- next part -------------- An HTML attachment was scrubbed... URL: From noreply+1147390018 at badoo.com Sun Jul 22 08:56:24 2012 From: noreply+1147390018 at badoo.com (Badoo) Date: Sun, 22 Jul 2012 15:56:24 +0000 Subject: [caracas-pm] Caracas Pm, Israel te ha dejado un mensaje... Message-ID: <20120722155625.6926A11F19F@xx1.develooper.com> Israel te ha dejado un mensaje... S?lo t? podr?s ver tanto el mensaje como su remitente y lo puedes borrar en cualquier momento. Puedes responder a trav?s del chat de Badoo. Para leer tu mensaje, haz clic en el siguiente enlace: http://us1.badoo.com/01053389118/in/IZqle10CcEw/?lang_id=7&m=21&mid=500c22a700000000000700007e1279cc Si al pinchar en el enlace de este mensaje no funciona, copia y p?galo en la barra de tu navegador. Este email es parte del proceso de entrega del mensaje enviado por Israel. Si has recibido este email por error, por favor ign?ralo. En un breve periodo de tiempo, la petici?n ser? eliminada del sistema. ?Div?rtete! El Equipo de Badoo Has recibido este email de Badoo Trading Limited (direcci?n postal a continuaci?n). http://us1.badoo.com/impersonation.phtml?lang_id=7&mail_code=21&email=caracas-pm%40pm.org&block_code=eee120&m=21&mid=500c22a700000000000700007e1279cc Badoo Trading Limited es una sociedad de responsabilidad limitada registrada en Inglaterra y Gales con n?mero 7540255 y domicilio en 12 Red Lion Square, Londres, WC1R 4QD. -------------- next part -------------- An HTML attachment was scrubbed... URL: From ait at p2ee.org Mon Jul 23 07:40:35 2012 From: ait at p2ee.org (Alejandro Imass) Date: Mon, 23 Jul 2012 10:40:35 -0400 Subject: [caracas-pm] Extensiones ResultSet y load_namespaces DBIx::Class Message-ID: Buenos d?as, Existen dos mecanismos saludables para extender las clases generadas por DBIx::Class::Schema::Loader 1) Extender las clases Result directamente debajo del checksum 2) Crear un directorio ResultSet paralelo a Result y crear clases con el mismo nombre que deriven de DBIx::Class::ResultSet y dejar que load_namespaces cargue las dos clases. Yo tengo tiempo usando el (2) sin embargo hay cosas que nunca he terminado de comprender bien y opino que el detalle del mecanismo no est? muy documentado as? que la idea es escuchar opiniones de otros usuarios a ver si mejoro algunas cosas en mi c?digo que no me gustan. Uno tiende a pensar que load_namespaces deber?a combinar los m?todos extendidos pero realmente no es as?. En realidad lo ?nico que hace es cargar las clases extendidas en ResultSet y asociarlas a la clase de Result pero realmente no hace mucho m?s que eso y siempre me ha parecido un poco limitado en ese sentido: Ejemplo: # tabla.pm creada por Loader depositada en Result package ns::Schema::Result::tabla; use base 'DBIx::Class::Core'; ... # tabla.pm creada por mi en ResultSet package ns::Schema::ResultSet::tabla; use base 'DBIx::Class::ResultSet'; sub foo { my $self = shift; } ... $objeto = $schema->resultset('tabla')->find(1); # esto NO funciona: $objeto->foo(); # sino la forma de usarlo es as?: $schema->resultset('tabla')->foo(); El $self que recibe la clase ResultSet es de si misma (obviamente) y no del $objeto por ende generalmente uno termina haciendo: $schema->resultset('tabla')->foo($objeto); Y la clase extendida termina siendo algo como: # tabla.pm creada por mi en ResultSet package ns::Schema::ResultSet::tabla; use base 'DBIx::Class::ResultSet'; sub foo { my $self = shift; my $tabla = shift; } ... Me parece realmente limitante y con el tiempo me he puesto a estudiar esto m?s a fondo a ver si comprendo bien la filosof?a que est? detr?s de este mecanismo de "extensi?n" porque lo m?s l?gico ser?a que $objeto->foo funcionara directo y el $self fuese de $objeto y no de una instancia de la clase ResultSet. La pregunta es: existe alguna forma de configurarlo de tal manera de combinar las dos _instancias_, o sencillamente la filosof?a de usar este mecanismo es mantener las cosas separadas de esta forma?? Me parece que deber?a resolver los m?todos, o amenos que una instancia "vea" a la otra ya que si uno inspecciona dentro de una instancia de la clase de Result ($objeto en el ejemplo arriba) se puede observar que hay un atributo llamado resultset_class que apunta a la _clase_ creada en ResultSet pero yo no he logrado que las instancias como tal se vean. Lo m?nimo que deber?a proveer EMHO es una referencia de una instancia a la otra, es decir que hubiese acceso a la instancia de Result desde la instancia de ResultSet o vice versa. Saludos, -- Alejandro Imass From juan.paredes at gmail.com Wed Jul 25 06:15:09 2012 From: juan.paredes at gmail.com (Juan Miguel Paredes) Date: Wed, 25 Jul 2012 08:45:09 -0430 Subject: [caracas-pm] Extensiones ResultSet y load_namespaces DBIx::Class In-Reply-To: References: Message-ID: 2012/7/23 Alejandro Imass : > Buenos d?as, > > Existen dos mecanismos saludables para extender las clases generadas > por DBIx::Class::Schema::Loader > > 1) Extender las clases Result directamente debajo del checksum > 2) Crear un directorio ResultSet paralelo a Result y crear clases con > el mismo nombre que deriven de DBIx::Class::ResultSet y dejar que > load_namespaces cargue las dos clases. > > Ejemplo: > > # tabla.pm creada por Loader depositada en Result > > package ns::Schema::Result::tabla; > > use base 'DBIx::Class::Core'; > > ... > > # tabla.pm creada por mi en ResultSet > > package ns::Schema::ResultSet::tabla; > > use base 'DBIx::Class::ResultSet'; > > sub foo { > my $self = shift; > > } > ... > > > $objeto = $schema->resultset('tabla')->find(1); > > # esto NO funciona: > $objeto->foo(); > > # sino la forma de usarlo es as?: > > $schema->resultset('tabla')->foo(); De hecho, el m?todo "foo" ha sido creado en una extensi?n del ResultSet, y en tu caso, $objeto es una instancia de Result, por eso no funciona $objeto->foo(); En particular, los m?todos creados en Result (debajo del checksum como apuntas) com?nmente se usan como "columnas virtuales" o para operaciones relacionadas con un objeto particular de la clase Result (una "fila" de la tabla, coloquialmente). En cambio, los m?todos en ResultSet son, bueno, como su nombre lo dice, para un conjunto de resultados. Por ejemplo, m?todos para implementar b?squedas reutilizables, o incluso para encapsular la l?gica de creaci?n del objeto, si no se hace en otra clase de "negocio". As? que, las dos formas de extensi?n que comentas no son equivalentes entre s?, y cada una tiene su prop?sito. Igual que t?, he utilizado ambas formas, mayormente seg?n lo comentado anteriormente, aunque seg?n las necesidades, creo que valdr?a la pena explorar otras opciones (herencia, como en DBIx::Class::AuditLog, o aprovechando Moose, como DBIx::Class::QueryLog). ?xitos! Juan M. Paredes A. From noreply+1147390018 at badoo.com Mon Jul 30 02:11:27 2012 From: noreply+1147390018 at badoo.com (Badoo) Date: Mon, 30 Jul 2012 09:11:27 +0000 Subject: [caracas-pm] =?utf-8?q?=C2=A1Lee_tu_mensaje_antes_de_que_sea_borr?= =?utf-8?q?ado!?= Message-ID: <20120730091128.2E9A511F00D@xx1.develooper.com> ?Lee el mensaje de Israel antes de que sea borrado! To read your message, follow this link: http://us1.badoo.com/01053389118/in/IZqle10CcEw/?lang_id=7&m=65&mid=50164fbc000000000007000006ba483c0002000041be If clicking the links in this message does not work, copy and paste them into the address bar of your browser. This email is part of our delivery procedure for the message sent by Israel. If you have received this email by mistake, please ignore it. The message will be deleted soon. Have fun! The Badoo Team Has recibido este email de Badoo Trading Limited (direcci?n postal a continuaci?n). http://us1.badoo.com/impersonation.phtml?lang_id=7&email=caracas-pm%40pm.org&block_code=eee120&m=65&mid=50164fbc000000000007000006ba483c0002000041be Badoo Trading Limited es una sociedad de responsabilidad limitada registrada en Inglaterra y Gales con n?mero 7540255 y domicilio en 12 Red Lion Square, Londres, WC1R 4QD. -------------- next part -------------- An HTML attachment was scrubbed... URL: