Как скопировать файл на Perl ?
Как скопировать файл на Perl из одной директории в другую?
Цитата:
Originally posted by goodstas
Как скопировать файл на Perl из одной директории в другую?
Как скопировать файл на Perl из одной директории в другую?
Открыть, прочитать, создать файл в нужной директории и записать туда содержимое исходного файла. Или (для никсов):
Код:
$result = `cp file1 dir/file`;
Цитата:
Originally posted by 2NetFly
Открыть, прочитать, создать файл в нужной директории и записать туда содержимое исходного файла. Или (для никсов):
Открыть, прочитать, создать файл в нужной директории и записать туда содержимое исходного файла. Или (для никсов):
Код:
$result = `cp file1 dir/file`;
Нужно просто скопировать файл на Perl с одной папки в другую. Возможно уже существует файл с таким именем в папке, в которую копируюм - в этом случае надо просто затереть.
1. Открыть существующий файл для чтения.
2. Прочитать файл в переменную.
3. Закрыть.
4. Открыть файл для перезаписи в нужной директории.
5. Записать содержимое переменной.
6. Закрыть.
Самое простое решение. Если операция копирования будет происходить часто и оперировать нужно будет файлами большого размера, предпочтительнее использовать построчное или побитовое копирование.
Если все равно не понятно, могу объяснить кодом на Преле.
move(откуда,куда)
copy(откуда,куда)
почитай доку по этому модулю возможно там есть возможность копировать с затиранием
если нет
if (-f "путь до файла") { unlink "путь до файла"; }
выполнять перед копированием (удалит указанный файл)
Цитата:
Originally posted by 2NetFly
Повторюсь:
1. Открыть существующий файл для чтения.
2. Прочитать файл в переменную.
3. Закрыть.
4. Открыть файл для перезаписи в нужной директории.
5. Записать содержимое переменной.
6. Закрыть.
Самое простое решение. Если операция копирования будет происходить часто и оперировать нужно будет файлами большого размера, предпочтительнее использовать построчное или побитовое копирование.
Если все равно не понятно, могу объяснить кодом на Преле.
Повторюсь:
1. Открыть существующий файл для чтения.
2. Прочитать файл в переменную.
3. Закрыть.
4. Открыть файл для перезаписи в нужной директории.
5. Записать содержимое переменной.
6. Закрыть.
Самое простое решение. Если операция копирования будет происходить часто и оперировать нужно будет файлами большого размера, предпочтительнее использовать построчное или побитовое копирование.
Если все равно не понятно, могу объяснить кодом на Преле.
Да, было бы проще увидеть код на Перле.
Цитата:
Originally posted by goodstas
Да, было бы проще увидеть код на Перле.
Да, было бы проще увидеть код на Перле.
Код:
print copy('/www/home/user1/test', '/www/home/user1/test2') ? "OK" : "Error";
sub copy
{
my ($from, $to) = (shift, shift);
my $data;
open (FROM, "<$from") || return undef;
$data .= $_ while <FROM>;
close FROM || return undef;
open (TO, ">$to") || return undef;
print TO $data;
close TO || return undef;
1;
}
sub copy
{
my ($from, $to) = (shift, shift);
my $data;
open (FROM, "<$from") || return undef;
$data .= $_ while <FROM>;
close FROM || return undef;
open (TO, ">$to") || return undef;
print TO $data;
close TO || return undef;
1;
}
Примитивно, но работает. Конечно, если есть возможность, лучше использовать готовый модуль.
Цитата:
Originally posted by 2NetFly
A mojno toje samoe, no na Perle?:)
Код:
print copy('/www/home/user1/test', '/www/home/user1/test2') ? "OK" : "Error";
sub copy
{
my ($from, $to) = (shift, shift);
my $data;
open (FROM, "<$from") || return undef;
$data .= $_ while <FROM>;
close FROM || return undef;
open (TO, ">$to") || return undef;
print TO $data;
close TO || return undef;
1;
}
sub copy
{
my ($from, $to) = (shift, shift);
my $data;
open (FROM, "<$from") || return undef;
$data .= $_ while <FROM>;
close FROM || return undef;
open (TO, ">$to") || return undef;
print TO $data;
close TO || return undef;
1;
}
A mojno toje samoe, no na Perle?:)
Цитата:
Originally posted by goodstas
hotia uje ne nado, thanks:)
Цитата:
Originally posted by goodstas
Это, собственно, и был Перл ;)
2)Для того чтобы работало для картинок нужно было добавить binmode FROM; и binmode TO; .
3)Для того, чтобы пользоваться в цикле нужно было
обнулять переменную $data . Так как иначе все картинки получались одинаковыми.
Но уже работает , спасибо:)
2. binmode используется только для Win систем. Под юнихом все будет работать и без него.
3. Переменна $data объявляется локально. Ее не нужно обнулять.
Цитата:
Originally posted by 2NetFly
1. Сделал просто для того, чтоб был лучше понятен код.
2. binmode используется только для Win систем. Под юнихом все будет работать и без него.
3. Переменна $data объявляется локально. Ее не нужно обнулять.
1. Сделал просто для того, чтоб был лучше понятен код.
2. binmode используется только для Win систем. Под юнихом все будет работать и без него.
3. Переменна $data объявляется локально. Ее не нужно обнулять.
Я без притензий, я только спасибо :)