我可以自动框一个变量在perl?



我使用autobox,因为它允许我在任意变量上使用JSON::Path:

use autobox::JSON::Path;
use Mojo::Util qw/dumper/;
my $w = { foo => 'bar', baz => [ 1, 2, 3 ] };
print dumper $w->get('$.baz');

其中autobox::JSON::Path在这里(仍然是早期代码)。

这意味着自动装箱会影响所有的hashref和arrayref。

是否有一种方法可以使它只影响特定的变量?或者它实际上与

相同吗?
my $w = autobox::JSON::Path::Get->new({ foo => 'bar', baz => [ 1, 2, 3 ] })

就这样?

下面是一个如何将autobox与JSON::Path结合使用的示例。您可以将autobox的使用限制在特定范围内,从而限制为特定变量,如下所示:

use strict;
use warnings;
use JSON::Path;
use Mojo::Util qw/dumper/;
sub HASH::get {
my ($hash, $arg) = @_;
my $path = JSON::Path->new($arg);
return $path->get($hash);
}
my $w = { foo => 'bar', baz => [ 1, 2, 3 ] };
{
use autobox;
print dumper $w->get('$.baz');
}

:

[
1,
2,
3
]

最新更新