Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何在ftp上列出本地目录的内容?_Perl_Ftp - Fatal编程技术网

Perl 如何在ftp上列出本地目录的内容?

Perl 如何在ftp上列出本地目录的内容?,perl,ftp,Perl,Ftp,我试图通过Perl脚本将文件发送到远程主机。为此,我希望列出本地目录,然后在使用以下命令遍历文件列表时选择要上载的文件: my @files = '!ls'; does not work my @files = 'lls'; does not work either 然后我想做: foreach my $file (@files) { next if -d $file; next unless $file =~ /^gateway_data/; $ftp->put($file) or w

我试图通过Perl脚本将文件发送到远程主机。为此,我希望列出本地目录,然后在使用以下命令遍历文件列表时选择要上载的文件:

my @files = '!ls'; does not work
my @files = 'lls'; does not work either
然后我想做:

foreach my $file (@files) {
next if -d $file;
next unless $file =~ /^gateway_data/;
$ftp->put($file) or warn "Failed '$file': $! ($^E)";
}
除了上面两个命令外,是否还有其他命令来生成本地目录中的文件列表? 我们将不胜感激

opendir(my $DIR, './') or die $!;
my @files = readdir($DIR);
foreach my $file (@files) {
    next if -d $file;
    next unless $file =~ /^gateway_data/;
    $ftp->put($file) or warn "Failed '$file': $! ($^E)";
}

这应该行得通。

非常感谢@ProfGhost,尽管我还没有尝试它,但我认为它肯定行得通。@mpapec您能解释一下为什么您将文件句柄更改为变量吗?Typeglobs比词法变量更容易出错;因此,由于具有全局性,它应该首先本地化,即
local*DIR
给代码增加了更多的噪音,没有经验的perl程序员对它的理解也减少了。非常感谢。