我的代码看起来像这样:
#!/usr/bin/perl -w
use strict;
use warnings;
my $i = 1;
my @old_names = glob "/root/pics/*.jpg";
my $new_name = "picture$i";
foreach my $old_name (@old_names) {
rename($old_name, $new_name) or
die "Couldn't rename $old_name to $new_name: $!\n";
} continue { $i++ }
Run Code Online (Sandbox Code Playgroud)
当我执行脚本时删除图片,我做错了什么?
编辑:
这对我有用.
#!/usr/bin/perl -w
use strict;
use warnings;
my $i = 1;
my @old_names = glob "/root/pics/*.jpg";
foreach my $old_name (@old_names) {
my $new_name = "picture$i" . ".jpg";
rename($old_name, "/root/pics/$new_name") or die "Couldn't rename $old_name to $new_name: $!\n";
} continue { $i++ }
Run Code Online (Sandbox Code Playgroud)
感谢大家的帮助.
这一行:
my $new_name = "picture$i";
Run Code Online (Sandbox Code Playgroud)
在你的循环之外.因此它没有得到更新.所以所有文件都被重命名为相同的名称,这有效地删除了它们.
解决方案是在循环内移动赋值,或者一起跳过变量并执行
rename($old_name, "picture$i") ...
Run Code Online (Sandbox Code Playgroud)
出于打高尔夫的目的,您也可以考虑
rename($old_name, "picture" . $i++) ...
Run Code Online (Sandbox Code Playgroud)
您可能还有兴趣查看File :: Copy,这是一个核心模块.
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |