Domanda

Ho un pezzo di codice che funziona bene. Fondamentalmente scorre attraverso ogni elemento di un hash usando foreach () e applica una trasformazione ad esso usando un'espressione regolare, in questo modo:

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

$ results è un hashref restituito dalla funzione fetchall_hashref () di DBI.

Appena per curiosità, volevo vedere se potevo riscriverlo usando invece map () , come mostrato sotto:

map {
   $results{

Ho un pezzo di codice che funziona bene. Fondamentalmente scorre attraverso ogni elemento di un hash usando foreach () e applica una trasformazione ad esso usando un'espressione regolare, in questo modo:

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

$ results è un hashref restituito dalla funzione fetchall_hashref () di DBI.

Appena per curiosità, volevo vedere se potevo riscriverlo usando invece map () , come mostrato sotto:

map {
   $results->{

Ho un pezzo di codice che funziona bene. Fondamentalmente scorre attraverso ogni elemento di un hash usando foreach () e applica una trasformazione ad esso usando un'espressione regolare, in questo modo:

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

$ results è un hashref restituito dalla funzione fetchall_hashref () di DBI.

Appena per curiosità, volevo vedere se potevo riscriverlo usando invece map () , come mostrato sotto:

map {
   $results{

Ho un pezzo di codice che funziona bene. Fondamentalmente scorre attraverso ogni elemento di un hash usando foreach () e applica una trasformazione ad esso usando un'espressione regolare, in questo modo:

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

$ results è un hashref restituito dalla funzione fetchall_hashref () di DBI.

Appena per curiosità, volevo vedere se potevo riscriverlo usando invece map () , come mostrato sotto:

map {
   $results->{

Ho un pezzo di codice che funziona bene. Fondamentalmente scorre attraverso ogni elemento di un hash usando foreach () e applica una trasformazione ad esso usando un'espressione regolare, in questo modo:

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

$ results è un hashref restituito dalla funzione fetchall_hashref () di DBI.

Appena per curiosità, volevo vedere se potevo riscriverlo usando invece map () , come mostrato sotto:

map {
   $results{

Ho un pezzo di codice che funziona bene. Fondamentalmente scorre attraverso ogni elemento di un hash usando foreach () e applica una trasformazione ad esso usando un'espressione regolare, in questo modo:

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

$ results è un hashref restituito dalla funzione fetchall_hashref () di DBI.

Appena per curiosità, volevo vedere se potevo riscriverlo usando invece map () , come mostrato sotto:

map {
   $results->{

Ho un pezzo di codice che funziona bene. Fondamentalmente scorre attraverso ogni elemento di un hash usando foreach () e applica una trasformazione ad esso usando un'espressione regolare, in questo modo:

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

$ results è un hashref restituito dalla funzione fetchall_hashref () di DBI.

Appena per curiosità, volevo vedere se potevo riscriverlo usando invece map () , come mostrato sotto:

map {
   $results{

Ho un pezzo di codice che funziona bene. Fondamentalmente scorre attraverso ogni elemento di un hash usando foreach () e applica una trasformazione ad esso usando un'espressione regolare, in questo modo:

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

$ results è un hashref restituito dalla funzione fetchall_hashref () di DBI.

Appena per curiosità, volevo vedere se potevo riscriverlo usando invece map () , come mostrato sotto:

<*>

Sfortunatamente, non funziona. Ho provato di tutto, ma finora senza successo. Qualcuno sa come farlo? Grazie.

Aggiorna

Il codice corretto, come risposta da ysth :

<*>

e la versione migliorata con meno stuzzicadenti pendenti suggeriti da Sinan & # 220; n & # 252 ; r

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

Sfortunatamente, non funziona. Ho provato di tutto, ma finora senza successo. Qualcuno sa come farlo? Grazie.

Aggiorna

Il codice corretto, come risposta da ysth :

<*>

e la versione migliorata con meno stuzzicadenti pendenti suggeriti da Sinan & # 220; n & # 252 ; r

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

Sfortunatamente, non funziona. Ho provato di tutto, ma finora senza successo. Qualcuno sa come farlo? Grazie.

Aggiorna

Il codice corretto, come risposta da ysth :

<*>

e la versione migliorata con meno stuzzicadenti pendenti suggeriti da Sinan & # 220; n & # 252 ; r

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

Sfortunatamente, non funziona. Ho provato di tutto, ma finora senza successo. Qualcuno sa come farlo? Grazie.

Aggiorna

Il codice corretto, come risposta da ysth :

<*>

e la versione migliorata con meno stuzzicadenti pendenti suggeriti da Sinan & # 220; n & # 252 ; r

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

Sfortunatamente, non funziona. Ho provato di tutto, ma finora senza successo. Qualcuno sa come farlo? Grazie.

Aggiorna

Il codice corretto, come risposta da ysth :

<*>

e la versione migliorata con meno stuzzicadenti pendenti suggeriti da Sinan & # 220; n & # 252 ; r

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

Sfortunatamente, non funziona. Ho provato di tutto, ma finora senza successo. Qualcuno sa come farlo? Grazie.

Aggiorna

Il codice corretto, come risposta da ysth :

<*>

e la versione migliorata con meno stuzzicadenti pendenti suggeriti da Sinan & # 220; n & # 252 ; r

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

Sfortunatamente, non funziona. Ho provato di tutto, ma finora senza successo. Qualcuno sa come farlo? Grazie.

Aggiorna

Il codice corretto, come risposta da ysth :

<*>

e la versione migliorata con meno stuzzicadenti pendenti suggeriti da Sinan & # 220; n & # 252 ; r

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

Sfortunatamente, non funziona. Ho provato di tutto, ma finora senza successo. Qualcuno sa come farlo? Grazie.

Aggiorna

Il codice corretto, come risposta da ysth :

<*>

e la versione migliorata con meno stuzzicadenti pendenti suggeriti da Sinan & # 220; n & # 252 ; r

<*>
È stato utile?

Soluzione

Nella versione della mappa, hai erroneamente modificato $ results- > { in $ results {. Metti il ??- > di nuovo dentro e dovrebbe funzionare.

Altri suggerimenti

Vale la pena ricordare che potresti cavartela

Vale la pena ricordare che potresti cavartela

<*>

in questo caso. Frugare nella struttura dei dati non disturba i riferimenti che lo compongono.

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

in questo caso. Frugare nella struttura dei dati non disturba i riferimenti che lo compongono.

Il secondo pezzo di codice usa un hash ma il primo usa un riferimento hash. Il seguente sembra funzionare:

use warnings;
use strict;

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

map {
   $results->{

Il secondo pezzo di codice usa un hash ma il primo usa un riferimento hash. Il seguente sembra funzionare:

<*>}{uri} =~ s/\".*\/(.*\.*(gif|jpe?g|png))\"/\/resources\/uploads\/$1/gi } keys %{$results}; for my $k (keys %$results) { print "$k $results->{$k}{uri}\n"; }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top