我有它的佔位符,我想替換一個路徑:Perl的條件替代
# an example path with a placeholder
my $path = '%myproject%Web/ui/images/';
# mapping of all placeholders
my %placeholders = (
myproject => 'myproject/installation/all'
);
# substituting all placeholders in the path
$path =~ s!%(.*?)%!/$placeholders{$1}/!g;
# works fine -> 'myproject/installation/all/Web/ui/images/'
print $path;
此代碼工作正常,但有一個問題:我有指定filesnames和不同的佔位符的一個長長的清單(因此散列)。現在爲了更健壯,我想拋出一個錯誤,如果在%placeholders
映射中不存在的路徑中指定了佔位符。
有沒有辦法做到這一點?
在這種使用情況下,definedness一個簡單的測試可能就足夠了,因爲它是包含字符串現有的,但未定義值的錯誤。這會將替換代碼簡化爲'$ path {$ 1} // die ...' – amon
@amon它的測試用於定義,不存在。但是,是的,我認爲它是可能的。但是他沒有說他有什麼Perl版本,因爲'//'是相對較新的操作符。 – PSIAlt
@amon謝謝你的優秀和快速的答覆。 amons版本適用於我的perl 5.12。但有一個問題:我有'/ $ path {$ 1} /'< - 這些封閉的'/'也需要在那裏。 – Christoph