Perl Getopt ::完成回调中的目录完成

时间:2015-11-08 19:43:56

标签: perl tabs completion

在Perl脚本中,我使用tab键自动完成Getopt::Complete。一切都运作良好,除了我想要实现的一个功能。

我想使用在某些情况下提供'目录'完成的回调。但是,从回调中返回'directory'不起作用,因为需要数组引用。

use Getopt::Complete (
    '<>' => sub {
        my ( $command, $value, $option, $other_opts ) = @_;
        if ( $other_opts->{'<>'} ) {
            return 'directories';    ## here I'd like directory completion
        }
        return ['foo'];
    }
);

如何实现这种行为?

1 个答案:

答案 0 :(得分:1)

未经测试!

查看文档后,我相信您可以将'directories'视为实际的子文件。它是在Getopt::Complete::Compgen中生成的,最终为Getopt::Complete::directories。所以你应该能够简单地称之为。

use Getopt::Complete (
    '<>' => sub {
        my ( $command, $value, $option, $other_opts ) = @_;
        if ( $other_opts->{'<>'} ) {
            return Getopt::Complete::directories(
                $command, 
                $value, 
                $option, 
                $other_opts,
            ); # forward to directory
        }
        return ['foo'];
    }
);