3
my $path = "//strange/path/";
需要獲得與第1個要素(一個)斜線= /strange
或只有/
是$路徑爲空或只包含斜槓。
目前有兩種解決方案,例如:
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點的正則表達式僅僅是難看。
存在更有效||最快|| 「更好」的方法?
就我個人而言,我喜歡使用模塊的方式,尤其是像'File :: Spec'這樣的標準模塊。您可以合理地確信代碼已經過數千用戶的測試並證明是有效的(與您自己的自制正則表達式不同),並且'File :: Spec'提供了自動跨平臺功能。 –