gpt4 book ai didi

perl - 在 Perl 中如何使用 map() 将操作应用于散列的每个元素?

转载 作者:行者123 更新时间:2023-12-02 05:23:08 24 4
gpt4 key购买 nike

我有一段代码可以正常工作。它基本上使用 foreach() 遍历散列的每个元素,并使用正则表达式对其应用转换,如下所示:

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

$results 是 DBI 的 fetchall_hashref() 函数返回的 hashref。

出于好奇,我想看看是否可以使用 map() 重写它,如下所示:

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

不幸的是,这行不通。我已经尝试了各种各样的事情,但到目前为止都没有成功。有人知道怎么做吗?谢谢。

更新

更正后的代码,由 ysth 回答:

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

以及 Sinan Ünür 建议的倾斜牙签的改进版本

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

最佳答案

值得一提的是,你可以逃脱

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

在这种情况下。浏览数据结构不会干扰构成它的引用。

关于perl - 在 Perl 中如何使用 map() 将操作应用于散列的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1605128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com