在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'];
}
);
如何实现这种行为?
答案 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'];
}
);