$a = '/etc/init/tree/errrocodr/a.txt'
Run Code Online (Sandbox Code Playgroud)
我想提取 /etc/init/tree/errrocodr/ 到$dir与a.txt到$file.我怎样才能做到这一点?
(编者注:原始问题假定你需要一个正则表达式.)
pax*_*blo 24
只需使用Basename:
use File::Basename;
$fullspec = "/etc/init/tree/errrocodr/a.txt";
my($file, $dir, $ext) = fileparse($fullspec);
print "Directory: " . $dir . "\n";
print "File: " . $file . "\n";
print "Suffix: " . $ext . "\n\n";
my($file, $dir, $ext) = fileparse($fullspec, qr/\.[^.]*/);
print "Directory: " . $dir . "\n";
print "File: " . $file . "\n";
print "Suffix: " . $ext . "\n";
Run Code Online (Sandbox Code Playgroud)
您可以看到这返回您请求的结果,但它也能够捕获扩展(在上一节中):
Directory: /etc/init/tree/errrocodr/
File: a.txt
Suffix:
Directory: /etc/init/tree/errrocodr/
File: a
Suffix: .txt
Run Code Online (Sandbox Code Playgroud)
enn*_*ler 16
你不需要正则表达式,你可以使用dirname():
use File::Basename;
my $dir = dirname($a)
Run Code Online (Sandbox Code Playgroud)
但是这个正则表达式将起作用:
my $dir = $a
$dir =~ s/(.*)\/.*$/$1/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20218 次 |
| 最近记录: |