在浏览CPAN时,我遇到了这个模块中的一段代码,让我感到难过.
sub import {
for my $mod (keys %INC) {
do {
delete $INC{$mod};
$mod =~ s/\.pm$//; $mod =~ s/\//::/g;
delete_package($mod);
} if $mod =~ m/^SOAP/;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么作者会使用do {} if块而不是常规if块?
一个区别是do { ... }返回值而if语句没有(尽管请参阅下面的注释.)
例如:
my $x = 3;
my $z = do { warn "in the do block"; 10 } if $x == 3;
Run Code Online (Sandbox Code Playgroud)
您可以使用三元运算符完成几乎相同的操作,尽管您无法对三元运算符的分支内的语句进行排序.
| 归档时间: |
|
| 查看次数: |
3179 次 |
| 最近记录: |