[bcn-pm] regexp dinamico
Xavier Pegenaute
xpegenauteatelepolis.es
Div Jul 6 03:04:28 PDT 2007
Creo que me gusta más la solución que he encontrado, aunque esta me la
apunto, nunca se sabe.
Gracias!
Xavi.
Xavier Noria wrote:
> On Jul 5, 2007, at 3:40 PM, Xavier Pegenaute wrote:
>
>
>> linea_1_del_cfg: regexp:"^(\d+)\s+(\d+)\s+(Test1)" grupos:"$2:
>> $1:$3"
>> linea_2_del_cfg: regexp:"^(\d+)\s+(\d+)\s+(Test2)" grupos:"$3:
>> $2:$1"
>>
>> Para hacer el matching no tengo problema porque pongo directamente la
>> cadena entre los m/.../, el problema viene con los grupos, por que al
>> leerlo y ponerlo en una variable, obviamente no hace lo que yo
>> quiero :-):
>>
>> if($linea =~ m/$matching/){
>> $datos = $varlocal
>> }
>>
>> Como podría solucionarlo?
>>
>
> La situacion ahi es que tienes el nombre de las variables y necesitas
> acceder a ellas en runtime. Afortunadamente son globales y ello es
> posible si strict refs esta deshabilitado:
>
> fxnafeynman:~/tmp$ cat foo.pl
> use strict;
> use warnings;
>
> my @groups = '$2:$1:$3' =~ /\d/g; # extract digits
> "foo" =~ /(.)(.)(.)/;
> foreach my $g (@groups) {
> no strict 'refs';
> print $$g, "\n";
> }
> fxnafeynman:~/tmp$ perl foo.pl
> o
> f
> o
>
> Estas se llaman symbolic o soft references en argot (documentadas en
> perlref), y estan desaconsejadas en general porque suelen indicar que
> necesitas una tabla hash en realidad, pero en este caso su uso parece
> lo adecuado.
>
> -- fxn
>
> _______________________________________________
> llista dels Barcelona-pm
> Barcelona-pmapm.org
> http://mail.pm.org/mailman/listinfo/barcelona-pm
> BCN Perl Mongers: http://barcelona.pm.org
>
Més informació de la llista de correu Barcelona-pm