我正在使用cygwin。 这个脚本的作用是加载我已经加载到桌面上的目录中的iphone图片。 它在图像查看器中打开它,让我看看图片。重命名外部作用域中的子使用变量中的文件(cygwin)
system("cygstart $dirname/$oldfile") ;
然后它给了我重新命名图片的选项。它虽然是抛出错误,而不是重命名图片。
Use of uninitialized value $oldfile in concatenation (.) or string at ./rename_image.pl line 29, <STDIN> line 6.
oldfile是一个全局变量,函数应该看变量。
#!/usr/bin/perl
#
use strict ;
use warnings ;
my $oldfile;
my $new_name;
my $dirname = "/cygdrive/c/Users/walt/Desktop/iphonepics/bunk_box/";
opendir(DIR, $dirname) or die "Cannot open dir: $!";
my @files = readdir(DIR);
foreach $oldfile (@files) {
system("cygstart $dirname/$oldfile") ;
print "Do you want to rename $oldfile ? ";
my $input = <STDIN> ;
chomp $input ;
if($input =~ m/^[y]$/i) {
rename_file() ;
} else {
my $doo = 1 ;
}
}
sub rename_file {
use File::Copy qw(move) ;
print "New name:\n" ;
my $new_name = <STDIN> ;
chomp $new_name ;
move "$dirname/$oldfile", "$dirname/$new_name";
return ;
}
我们是否看到100%的代码?除了在'foreach'循环中执行rename_file没有可能的方法吗? – DavidO
这与您看到的警告无关,但您是否注意到您的路径将如下所示? ''/ cygdrive/c/Users/walt/Desktop/iphonepics/bunk_box // foobar'(换句话说,你要连接一个以/结尾的字符串,在你的连接中使用另一个/ – DavidO
是的,这是代码和否,它不重命名任何文件,它迄今为止不能按计划运行,另外,没有我没有注意到$ dirname变量中的额外斜线。一个变量 - 以斜线或开头结尾(假设斜线) – capser