我有它的占位符,我想替换一个路径: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