Perl 中用于获取文件名的 glob() 函数
glob() function in Perl for getting filenames
如何使用 glob() 函数获取存储在特定文件夹中的文件的具体名称?我在下面有一个示例源代码,但输出不同,它显示文件的完整路径,而不是仅显示特定文件名。如何只从路径集中检索文件名或如何直接访问并获取特定文件名?谢谢!
@files = glob('/Perl/Assignment/*');
foreach $files(@files){
print "$files\n";
}
输出:
/Perl/Assignment/file1.txt
/Perl/Assignment/file2.txt
/Perl/Assignment/file3.txt
预期输出:
file1.txt
file2.txt
file3.txt
您可以使用 File::Basename
:
use File::Basename;
my @files = glob('/Perl/Assignment/*');
foreach my $file (@files){
print basename($file), "\n";
}
长期以来,它一直是核心 Perl 的一部分。
(在这种情况下必须使用括号,否则它认为 "\n"
是 basename
而不是 print
的参数。)
如果您给 glob
一个路径,那么它将 return 一个。您可以 chdir
到目录并仅指定文件名模式,如下所示
use strict;
use warnings;
use 5.010;
use autodie;
use constant DIR => '/Perl/Assignment';
chdir DIR;
my @files = glob '*';
say for @files;
或者,如果不更改工作目录很重要,那么您可以使用 File::chdir
模块对其进行本地化,如下所示
use strict;
use warnings;
use 5.010;
use autodie;
use constant DIR => '/Perl/Assignment';
my @files = do {
local $CWD = DIR;
glob '*';
};
say for @files;
如何使用 glob() 函数获取存储在特定文件夹中的文件的具体名称?我在下面有一个示例源代码,但输出不同,它显示文件的完整路径,而不是仅显示特定文件名。如何只从路径集中检索文件名或如何直接访问并获取特定文件名?谢谢!
@files = glob('/Perl/Assignment/*');
foreach $files(@files){
print "$files\n";
}
输出:
/Perl/Assignment/file1.txt
/Perl/Assignment/file2.txt
/Perl/Assignment/file3.txt
预期输出:
file1.txt
file2.txt
file3.txt
您可以使用 File::Basename
:
use File::Basename;
my @files = glob('/Perl/Assignment/*');
foreach my $file (@files){
print basename($file), "\n";
}
长期以来,它一直是核心 Perl 的一部分。
(在这种情况下必须使用括号,否则它认为 "\n"
是 basename
而不是 print
的参数。)
如果您给 glob
一个路径,那么它将 return 一个。您可以 chdir
到目录并仅指定文件名模式,如下所示
use strict;
use warnings;
use 5.010;
use autodie;
use constant DIR => '/Perl/Assignment';
chdir DIR;
my @files = glob '*';
say for @files;
或者,如果不更改工作目录很重要,那么您可以使用 File::chdir
模块对其进行本地化,如下所示
use strict;
use warnings;
use 5.010;
use autodie;
use constant DIR => '/Perl/Assignment';
my @files = do {
local $CWD = DIR;
glob '*';
};
say for @files;