Perl:Dirhandle,
Perl: Dirhandle,
我正在阅读 how-do-i-read-in-the-contents-of-a-directory and wanted to find out more about doing it without opening and closing directories as shown in @davidprecious' answer. Tried to read up on DirHandle(希望有更多的解释和示例),其他几个地方只是将我重定向到同一个 perldoc 页面。仍然不确定在哪里规定读取路径。
假设我想要 "E:\parent\sub1\sub2\" 的内容并将其放入 $p 之类的字符串变量中,那么在使用 Dirhandle 时我应该在哪里提及 $p?
希望得到一些指导。谢谢
就我个人而言,我认为这太复杂了,您可能想要的是glob
:
#!/usr/bin/env perl
use strict;
use warnings;
foreach my $file ( glob "E:\parent\sub1\sub2\*" ) {
print $file,"\n";
}
尽管注意 - glob 为您提供文件的 路径 ,而不是文件名。这(IMO)通常更有用,因为您可以将结果传递给 open
,如果您正在执行 readdir
,您将获得一个文件名并需要在其上添加路径。
但是,如果您确实想通过 DirHandle
坚持这样做:
#!/usr/bin/env perl
use strict;
use warnings;
use DirHandle;
my $dir_handle = DirHandle -> new ( "C:\Users\Rolison\" );
while ( my $entry = $dir_handle -> read ) {
print $entry,"\n";
}
不要使用 $p
作为变量名 - 单字符变量名几乎总是不好的风格。
可能值得指出的是,Windows 很乐意使用正斜杠 (/
) 作为目录分隔符 - 这避免了所有那些丑陋的双反斜杠。
my $dir_handle = DirHandle->new('E:/parent/sub1/sub2/');
while ( my $entry = $dir_handle->read ) {
say $entry;
}
我正在阅读 how-do-i-read-in-the-contents-of-a-directory and wanted to find out more about doing it without opening and closing directories as shown in @davidprecious' answer. Tried to read up on DirHandle(希望有更多的解释和示例),其他几个地方只是将我重定向到同一个 perldoc 页面。仍然不确定在哪里规定读取路径。
假设我想要 "E:\parent\sub1\sub2\" 的内容并将其放入 $p 之类的字符串变量中,那么在使用 Dirhandle 时我应该在哪里提及 $p?
希望得到一些指导。谢谢
就我个人而言,我认为这太复杂了,您可能想要的是glob
:
#!/usr/bin/env perl
use strict;
use warnings;
foreach my $file ( glob "E:\parent\sub1\sub2\*" ) {
print $file,"\n";
}
尽管注意 - glob 为您提供文件的 路径 ,而不是文件名。这(IMO)通常更有用,因为您可以将结果传递给 open
,如果您正在执行 readdir
,您将获得一个文件名并需要在其上添加路径。
但是,如果您确实想通过 DirHandle
坚持这样做:
#!/usr/bin/env perl
use strict;
use warnings;
use DirHandle;
my $dir_handle = DirHandle -> new ( "C:\Users\Rolison\" );
while ( my $entry = $dir_handle -> read ) {
print $entry,"\n";
}
不要使用 $p
作为变量名 - 单字符变量名几乎总是不好的风格。
可能值得指出的是,Windows 很乐意使用正斜杠 (/
) 作为目录分隔符 - 这避免了所有那些丑陋的双反斜杠。
my $dir_handle = DirHandle->new('E:/parent/sub1/sub2/');
while ( my $entry = $dir_handle->read ) {
say $entry;
}