有
my $path = "//strange/path/";
需要使用(一个)前导斜杠 = 获取第一个元素,/strange
或者只有/
$path 为空或仅包含斜杠。
目前有两种解决方案,例如:
use 5.014;
use warnings;
use File::Spec;
my $path = "//strange/path/";
#version with File::Spec
my $v1 = "/" . ([grep {/./} File::Spec->splitdir($path)]->[0] // "");
say $v1;
#regex
my $v2 = $path;
$v2 =~ s{^/*}{};
$v2 =~ s{/.*}{};
$v2 =~ s{^}{/};
say $v2;
我不喜欢其中任何一个,因为 1.st 使用模块,而第二个中的 3 个正则表达式简直丑陋。
存在更有效|| 最快的|| “更好”的方法?