Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Создание копии картинки в другой папки


Автор: MaxPayne 31.10.2006, 10:13
Проблема такая:
Делаю глобальную перестановку и перемещения на сайте силами перла.

Имеется много папок в которых лежат картинки, теперь нужно эти картинки из каждой папки открыть и сделать копию (не перемещаю на всякий случай) в другую папку.
Для теста перебираю 300 папок.

Из файла например 
/home/www/htdocs/138714367814935814/2000001/foto.jpg
нужно сделать
/home/www/htdocs/file/img/20000001.jpg
и так далее.

Привожу код, который создает в новой папке файл, но он обрезанный. Т.е. вместо 17 Кб картинки получает 636 байт.
В чем беда?


Код

$count=20000001;

while ($count < 20000300)
{
open (F,"/home/www/htdocs/138714367814935814/$count/foto.jpg");
binmode F;
@FF = <F>;
close(F);

$file = $count . '.jpg';

open(F,">/home/www/htdocs/file/img/$file"); 
binmode(F);
print F <@FF>;
close(F);

$count++;
}

Автор: djkostya 31.10.2006, 10:52
Может лучше воспользоваться командой cp

Автор: nitr 31.10.2006, 11:47
MaxPayne, имел ввиду обычным копированием smile можно перемещением smile
Код

#!perl -w
use strict;
rename '/home/www/htdocs/138714367814935814/2000001/foto.jpg', '/home/www/htdocs/file/img/20000001.jpg';

;)

Добавлено @ 11:51 
прямо так и можно
Код

#!perl -w
use strict;

for (my $count = 20000001; $count < 20000300; $count++) {
    rename qq|/home/www/htdocs/138714367814935814/$count/foto.jpg|, qq|/home/www/htdocs/file/img/$count.jpg|;
}

Автор: MaxPayne 31.10.2006, 12:07
Перемещать как раз не хотел - сначала скопирую - проверю, поднастрою модперл, потом уже удалю старое.

Копировать как я понимаю примерно как и перемещать?

Код

#!perl -w
use strict;

for (my $count = 20000001; $count < 20000300; $count++) {
    copy qq|/home/www/htdocs/138714367814935814/$count/foto.jpg|, qq|/home/www/htdocs/file/img/$count.jpg|;
}

Автор: JUmPER 31.10.2006, 14:18
Код

use File::Copy;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)