我正在使用Perl的Samba::Smbstatus模块。文档说,值是在哈希引用的数组引用中返回的。我将如何获取价值?
我已经尝试了一些方法并且无处可去。
答案 0 :(得分:1)
use Data::Dumper;
for my $hash_reference (@$aray_reference) {
# to check what keys are available
# print Dumper $hash_reference;
print $hash_reference->{attr1}, $hash_reference->{attr2};
}
答案 1 :(得分:0)
使用Data::Dumper并打印结果。这可以帮助您在获得的结果中访问您要查找的信息。
想象一下你的结构是这样的:
my $data = [ {one=>1, two=>2}, {three=>3, four=>4} ];
# Access three key this way:
print $data->[1]->{three}, "\n";
答案 2 :(得分:0)
我认为你在谈论services
方法的回报?
这是访问结构中所有数据的一种方法。
首先,使用$services
取消引用@$services
数组引用,然后可以使用for
循环对其进行迭代,就像任何其他数组一样。
每个元素$service
都是哈希引用。如果您再次查看文档,则会看到它包含密钥service
,pid
,machine
和connected
。要使用引用访问哈希元素,请编写$hashref->{key}
。所以我添加了四个printf
语句来打印这四个元素的值。
我无法对此进行测试,但语法会检出。
use strict;
use warnings;
use Samba::Smbstatus;
my $smbstats = Samba::Smbstatus->new;
my $services = $smbstats->services;
for my $service (@$services) {
printf "Service: %s\n", $service->{service};
printf "PID: %s\n", $service->{pid};
printf "Machine: %s\n", $service->{machine};
printf "Connected: %s\n", $service->{connected};
}
答案 3 :(得分:0)
如果你得到$ arrayRef,那么你需要做的就是获得所有的值
for my $hashRef (@$arrayRef) {
foreach my $key (keys %$hashRef) {
print $hashRef->{$key}, "\n";
}
}