gpt4 book ai didi

perl - 使用表示哈希结构的字符串访问哈希引用数据

转载 作者:行者123 更新时间:2023-12-04 06:47:20 24 4
gpt4 key购买 nike

假设我有一个复杂的哈希引用 $hash_ref ,我想通过执行以下操作来访问其中的数据:

my $string1 = "{books}";
my $string2 = "{31335}->{book_name}";
print Dumper($hash_ref->$string1->$string2);

当然,这行不通,但我希望它能解释我想做的事情。

显然,我有很多方法可以完成这项工作,但我(出于好奇)真的很想知道是否有一些 Perl 魔法可以在不拆分字符串等的情况下完成这项工作。

我知道我可以创建 3 个字符串 ("books", "31335", "book_name")并在一秒钟内完成此操作,当然还有其他方法,但我不明白是否可以通过使用表示哈希结构的字符串来实际访问哈希数据,如上例所示。

谢谢 :)

最佳答案

可以使用 eval 来完成.然而,仅仅因为有些事情可以做并不意味着它应该做。

use strict;
use warnings;

my $hr = { books => { 31335 => { book_name => 'FOO' } } };

my $k1 = "{books}";
my $k2 = "{31335}->{book_name}";

my $f = eval "\$hr->$k1->$k2"; # Don't do this. It's a terrible idea.
print $f, "\n"; # FOO

您应该硬着头皮从字符串中提取键:
my @ks = "$k1$k2" =~ /\{ \s* (.+?) \s* \}/gx;
$f = $hr;
$f = $f->{$_} for @ks;
print $f, "\n"; # FOO

关于perl - 使用表示哈希结构的字符串访问哈希引用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3565302/

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