运行Learn Perl(learn.perl.org)示例以读取目录时出错

时间:2017-05-16 07:59:02

标签: perl

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行。

2 个答案:

答案 0 :(得分:4)

是的,你是对的。似乎这个例子在过去几天内被改为使用Path :: Tiny,并且此错误在此时滑落。

我已经提交了拉取请求来修复它。

https://github.com/perlorg/perlweb/pull/233

答案 1 :(得分:3)

在learn.perl.org示例中看起来像一个简单的错误:Path::Tiny docs中的示例是正确的。迭代器是一个函数,而不是一个对象;它使用$iter->()生成值,而不是 $iter->next