来自Archive::Extract的 Perldoc :
$ae->文件
这是一个数组 ref,包含存档中的所有路径。有关详细信息,请参阅 extract()。
方法返回的不是数组和散列而是对它们的引用是很常见的。将数组和散列的引用作为参数的方法也很常见。这是因为在方法和调用之间来回传递的数据更少。
你可以这样做:
for my $file ( @{ $ae->files } ) {
print "$file\n";
}
@{...}
取消引用引用并使其成为一个简单的数组。@{...}
是的,您可以像我一样放置返回数组引用的方法调用。
如前所述,一个非常有用的包是Data::Dumper。这可以作为参考并向您展示其中包含的数据结构。它还会告诉您该数据结构是否代表一个受祝福的对象,这可能是一个线索,表明您可以使用一种方法来提取数据。
例如,想象一个名为Company的对象。Employee
其中一种方法可能是 $company->Employees ,它返回对objects的数组引用。你可能没有意识到这一点并发现你得到了类似ARRAY{0x7fd5c22f7cd8)
返回的东西,通过 Data::Dumper 推送它可能会帮助你看到结构:
use Data::Dumper;
use Feature qw(say);
use Company;
[...]
@employee_list = $company->Employees;
# say join "\n", @employee_list; #Doesn't work.
say Dumper @employee_list;
这可能会打印:
$VAR = [
{
FIRST => 'Marion',
LAST => 'Librarian',
POSITION => 'Yes Man',
} Employee,
{
FIRST => 'Charlie',
LAST => 'australopithecus`,
POSITION => 'Cheese Cube Eater'
} Employee,
]
您不仅看到这是一个哈希引用数组,而且这些也是对象Employee
。因此,您应该使用Employee
类中的一些方法来解析您想要的信息。
use Feature qw(say);
use Company;
use Employee;
[...]
for my $employee ( @{ $company->Employees } ) {
say "First Name: " . $employee->First;
say "Last Name: " . $employee->Last;
say "Position: " . $employee->Position;
print "\n";
}