learn.perl.org包含reading the contents of a directory的示例代码:
#!/usr/bin/perl
use strict;
use warnings;
use Path::Tiny;
my $dir = path('foo','bar'); # foo/bar
# Iterate over the content of foo/bar
my $iter = $dir->iterator;
while (my $file = $iter->next) {
# See if it is a directory and skip
next if $file->is_dir();
# Print out the file name and path
print "$file\n";
}
使用Perl 5.18.2和Path :: Tiny of DAGOLDEN / Path-Tiny-0.104.tar.gz运行它,我收到错误:
无法在read_directory.pl上的未填充引用上调用方法“next” 第11行。
答案 0 :(得分:4)
是的,你是对的。似乎这个例子在过去几天内被改为使用Path :: Tiny,并且此错误在此时滑落。
我已经提交了拉取请求来修复它。
答案 1 :(得分:3)
在learn.perl.org示例中看起来像一个简单的错误:Path::Tiny docs中的示例是正确的。迭代器是一个函数,而不是一个对象;它使用$iter->()
生成值,而不是
$iter->next
。