Я пытаюсь переместить файлы из DIR1 в DIR2, используя скрипт Perl. Мой код компилируется, но, к сожалению, работает неправильно. Заранее спасибо за предложения
#!/usr/bin/perl -w
use File::Copy;
use Cwd 'abs_path';
if ( @ARGV != 2 ) {
die "Script takes two parameters: dir1 dir2";
}
if ( -d $ARGV[0] && -d $ARGV[1] )
{
opendir my $DIR, $ARGV[0] or die "Read error: $!";
while(my $file = readdir $DIR )
{
next if ($file eq "." or $file eq "..");
my $filepath = abs_path($file);
print "$filepath\n";
move $filepath, $ARGV[1];
}
closedir $DIR;
}
else
{
print "Both arguments must be directories!\n";
}
Сценарий печатает все файлы в DIR1, но не удается выполнить перемещение.
abs_path
делает не то, что вы думаете. Он просто смотрит на аргумент, который вы ему дали, и возвращает, каким был бы абсолютный путь, если бы этот аргумент представлял относительный путь. Он не выполняет поиск в вашей файловой системе, чтобы выяснить, где находится этот файл, и возвращает фактический абсолютный путь к этому файлу. Вам необходимо самостоятельно указать каталог, который содержится в$ARGV[0]
. - person Paul L   schedule 18.05.2016