Pregunta

Tengo un código que funciona bien. Básicamente recorre cada elemento de un hash usando foreach () y le aplica una transformación usando una expresión regular, como por ejemplo:

foreach my $key ( keys( %{$results} ) ) {
   $results->{$key}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi;
}

$ results es un hashref devuelto por la función fetchall_hashref () de DBI.

Solo por curiosidad, quería ver si podía reescribirlo usando map () , como se muestra a continuación:

map {
   $results{

Tengo un código que funciona bien. Básicamente recorre cada elemento de un hash usando foreach () y le aplica una transformación usando una expresión regular, como por ejemplo:

foreach my $key ( keys( %{$results} ) ) {
   $results->{$key}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi;
}

$ results es un hashref devuelto por la función fetchall_hashref () de DBI.

Solo por curiosidad, quería ver si podía reescribirlo usando map () , como se muestra a continuación:

map {
   $results->{

Tengo un código que funciona bien. Básicamente recorre cada elemento de un hash usando foreach () y le aplica una transformación usando una expresión regular, como por ejemplo:

foreach my $key ( keys( %{$results} ) ) {
   $results->{$key}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi;
}

$ results es un hashref devuelto por la función fetchall_hashref () de DBI.

Solo por curiosidad, quería ver si podía reescribirlo usando map () , como se muestra a continuación:

map {
   $results{

Tengo un código que funciona bien. Básicamente recorre cada elemento de un hash usando foreach () y le aplica una transformación usando una expresión regular, como por ejemplo:

foreach my $key ( keys( %{$results} ) ) {
   $results->{$key}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi;
}

$ results es un hashref devuelto por la función fetchall_hashref () de DBI.

Solo por curiosidad, quería ver si podía reescribirlo usando map () , como se muestra a continuación:

map {
   $results->{

Tengo un código que funciona bien. Básicamente recorre cada elemento de un hash usando foreach () y le aplica una transformación usando una expresión regular, como por ejemplo:

foreach my $key ( keys( %{$results} ) ) {
   $results->{$key}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi;
}

$ results es un hashref devuelto por la función fetchall_hashref () de DBI.

Solo por curiosidad, quería ver si podía reescribirlo usando map () , como se muestra a continuación:

map {
   $results{

Tengo un código que funciona bien. Básicamente recorre cada elemento de un hash usando foreach () y le aplica una transformación usando una expresión regular, como por ejemplo:

foreach my $key ( keys( %{$results} ) ) {
   $results->{$key}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi;
}

$ results es un hashref devuelto por la función fetchall_hashref () de DBI.

Solo por curiosidad, quería ver si podía reescribirlo usando map () , como se muestra a continuación:

map {
   $results->{

Tengo un código que funciona bien. Básicamente recorre cada elemento de un hash usando foreach () y le aplica una transformación usando una expresión regular, como por ejemplo:

foreach my $key ( keys( %{$results} ) ) {
   $results->{$key}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi;
}

$ results es un hashref devuelto por la función fetchall_hashref () de DBI.

Solo por curiosidad, quería ver si podía reescribirlo usando map () , como se muestra a continuación:

map {
   $results{

Tengo un código que funciona bien. Básicamente recorre cada elemento de un hash usando foreach () y le aplica una transformación usando una expresión regular, como por ejemplo:

foreach my $key ( keys( %{$results} ) ) {
   $results->{$key}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi;
}

$ results es un hashref devuelto por la función fetchall_hashref () de DBI.

Solo por curiosidad, quería ver si podía reescribirlo usando map () , como se muestra a continuación:

<*>

Lamentablemente, eso no funciona. He intentado todo tipo de cosas pero hasta ahora sin éxito. ¿Alguien sabe cómo hacer esto? Gracias.

ACTUALIZAR

El código corregido, tal como lo responde ysth :

<*>

y la versión mejorada con menos palillos de dientes inclinados sugeridos por Sinan & # 220; n & # 252 ; r

<*>}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi } keys %{$results};

Lamentablemente, eso no funciona. He intentado todo tipo de cosas pero hasta ahora sin éxito. ¿Alguien sabe cómo hacer esto? Gracias.

ACTUALIZAR

El código corregido, tal como lo responde ysth :

<*>

y la versión mejorada con menos palillos de dientes inclinados sugeridos por Sinan & # 220; n & # 252 ; r

<*>}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi } keys %{$results};

Lamentablemente, eso no funciona. He intentado todo tipo de cosas pero hasta ahora sin éxito. ¿Alguien sabe cómo hacer esto? Gracias.

ACTUALIZAR

El código corregido, tal como lo responde ysth :

<*>

y la versión mejorada con menos palillos de dientes inclinados sugeridos por Sinan & # 220; n & # 252 ; r

<*>}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi } keys %{$results};

Lamentablemente, eso no funciona. He intentado todo tipo de cosas pero hasta ahora sin éxito. ¿Alguien sabe cómo hacer esto? Gracias.

ACTUALIZAR

El código corregido, tal como lo responde ysth :

<*>

y la versión mejorada con menos palillos de dientes inclinados sugeridos por Sinan & # 220; n & # 252 ; r

<*>}{uri} =~ s{".*/(.*\.*(gif|jpe?g|png))"}{/resources/uploads/$1}gi } keys %{$results};

Lamentablemente, eso no funciona. He intentado todo tipo de cosas pero hasta ahora sin éxito. ¿Alguien sabe cómo hacer esto? Gracias.

ACTUALIZAR

El código corregido, tal como lo responde ysth :

<*>

y la versión mejorada con menos palillos de dientes inclinados sugeridos por Sinan & # 220; n & # 252 ; r

<*>}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi } keys %{$results};

Lamentablemente, eso no funciona. He intentado todo tipo de cosas pero hasta ahora sin éxito. ¿Alguien sabe cómo hacer esto? Gracias.

ACTUALIZAR

El código corregido, tal como lo responde ysth :

<*>

y la versión mejorada con menos palillos de dientes inclinados sugeridos por Sinan & # 220; n & # 252 ; r

<*>}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi } keys %{$results};

Lamentablemente, eso no funciona. He intentado todo tipo de cosas pero hasta ahora sin éxito. ¿Alguien sabe cómo hacer esto? Gracias.

ACTUALIZAR

El código corregido, tal como lo responde ysth :

<*>

y la versión mejorada con menos palillos de dientes inclinados sugeridos por Sinan & # 220; n & # 252 ; r

<*>}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi } keys %{$results};

Lamentablemente, eso no funciona. He intentado todo tipo de cosas pero hasta ahora sin éxito. ¿Alguien sabe cómo hacer esto? Gracias.

ACTUALIZAR

El código corregido, tal como lo responde ysth :

<*>

y la versión mejorada con menos palillos de dientes inclinados sugeridos por Sinan & # 220; n & # 252 ; r

<*>
¿Fue útil?

Solución

En la versión del mapa, ha cambiado por error $ results- > { a $ results {. Ponga el - > de nuevo y debería funcionar.

Otros consejos

Vale la pena mencionar que podría salirse con la suya

Vale la pena mencionar que podría salirse con la suya

<*>

en este caso. Hurgando en la estructura de datos no perturba las referencias que lo componen.

->{uri} =~ s/foo/bar/ for values %$results;

en este caso. Hurgando en la estructura de datos no perturba las referencias que lo componen.

La segunda parte del código usa un hash, pero el primero usa una referencia de hash. Lo siguiente parece funcionar:

use warnings;
use strict;

my $results = {
    a => {uri => "\"c/x.png\"" },
    b => {uri => "\"d/y.jpeg\""}
};

map {
   $results->{

La segunda parte del código usa un hash, pero el primero usa una referencia de hash. Lo siguiente parece funcionar:

<*>}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi } keys %{$results}; for my $k (keys %$results) { print "$k $results->{$k}{uri}\n"; }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top