如何用Perl进行两次替换?
我使用以下代码.我使用两次s替换...我希望所有的线条更少...
(my $newName = $grib) =~ s/:00:00.grb//;
rename $grib, $newName;
(my $newName1 = $newName) =~ s/d01/d02/g;
rename $newName, $newName1;
Run Code Online (Sandbox Code Playgroud)
按照要求:
(my $newName = $grib) =~ s/:00:00.grb//; rename $grib, $newName; (my $newName1 = $newName) =~ s/d01/d02/g; rename $newName, $newName1;
Run Code Online (Sandbox Code Playgroud)
但那是愚蠢的.也没有理由把所有东西都塞进一行.相反,致力于生成高质量的可读代码.对于初学者来说,一旦做了就停止重命名两次!
my $newName = $grib;
$newName =~ s/:00:00.grb//;
$newName =~ s/d01/d02/g;
rename($grib, $newName)
or die("Can't rename \"$grib\" to \"$newName\": $!\n");
Run Code Online (Sandbox Code Playgroud)
使用5.14+,可以将其简化为以下内容:
my $newName = $grib =~ s/:00:00.grb//r =~ s/d01/d02/gr;
rename($grib, $newName)
or die("Can't rename \"$grib\" to \"$newName\": $!\n");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |