Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как скопировать файл на Perl ?

2.3K
05 сентября 2003 года
goodstas
28 / / 06.08.2003
Как скопировать файл на Perl из одной директории в другую?
1.8K
05 сентября 2003 года
2NetFly
132 / / 01.09.2003
Цитата:
Originally posted by goodstas
Как скопировать файл на Perl из одной директории в другую?


Открыть, прочитать, создать файл в нужной директории и записать туда содержимое исходного файла. Или (для никсов):

 
Код:
$result = `cp file1 dir/file`;
2.3K
05 сентября 2003 года
goodstas
28 / / 06.08.2003
Цитата:
Originally posted by 2NetFly

Открыть, прочитать, создать файл в нужной директории и записать туда содержимое исходного файла. Или (для никсов):
 
Код:
$result = `cp file1 dir/file`;



Нужно просто скопировать файл на Perl с одной папки в другую. Возможно уже существует файл с таким именем в папке, в которую копируюм - в этом случае надо просто затереть.

1.8K
05 сентября 2003 года
2NetFly
132 / / 01.09.2003
Повторюсь:
1. Открыть существующий файл для чтения.
2. Прочитать файл в переменную.
3. Закрыть.
4. Открыть файл для перезаписи в нужной директории.
5. Записать содержимое переменной.
6. Закрыть.
Самое простое решение. Если операция копирования будет происходить часто и оперировать нужно будет файлами большого размера, предпочтительнее использовать построчное или побитовое копирование.

Если все равно не понятно, могу объяснить кодом на Преле.
283
06 сентября 2003 года
Alone
910 / / 20.11.2002
use File::Copy;
move(откуда,куда)
copy(откуда,куда)

почитай доку по этому модулю возможно там есть возможность копировать с затиранием
если нет
if (-f "путь до файла") { unlink "путь до файла"; }
выполнять перед копированием (удалит указанный файл)
2.3K
06 сентября 2003 года
goodstas
28 / / 06.08.2003
Цитата:
Originally posted by 2NetFly
Повторюсь:
1. Открыть существующий файл для чтения.
2. Прочитать файл в переменную.
3. Закрыть.
4. Открыть файл для перезаписи в нужной директории.
5. Записать содержимое переменной.
6. Закрыть.
Самое простое решение. Если операция копирования будет происходить часто и оперировать нужно будет файлами большого размера, предпочтительнее использовать построчное или побитовое копирование.

Если все равно не понятно, могу объяснить кодом на Преле.



Да, было бы проще увидеть код на Перле.

1.8K
07 сентября 2003 года
2NetFly
132 / / 01.09.2003
Цитата:
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; 
}

Примитивно, но работает. Конечно, если есть возможность, лучше использовать готовый модуль.
2.3K
12 сентября 2003 года
goodstas
28 / / 06.08.2003
Цитата:
Originally posted by 2NetFly

Код:
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; 
}


A mojno toje samoe, no na Perle?:)

2.3K
12 сентября 2003 года
goodstas
28 / / 06.08.2003
Цитата:
Originally posted by goodstas




hotia uje ne nado, thanks:)

1.8K
12 сентября 2003 года
2NetFly
132 / / 01.09.2003
Цитата:
Originally posted by goodstas


Это, собственно, и был Перл ;)

2.3K
12 сентября 2003 года
goodstas
28 / / 06.08.2003
1)Ну вроде сверху стояло PHP ....

2)Для того чтобы работало для картинок нужно было добавить binmode FROM; и binmode TO; .

3)Для того, чтобы пользоваться в цикле нужно было
обнулять переменную $data . Так как иначе все картинки получались одинаковыми.

Но уже работает , спасибо:)
1.8K
12 сентября 2003 года
2NetFly
132 / / 01.09.2003
1. Сделал просто для того, чтоб был лучше понятен код.
2. binmode используется только для Win систем. Под юнихом все будет работать и без него.
3. Переменна $data объявляется локально. Ее не нужно обнулять.
2.3K
12 сентября 2003 года
goodstas
28 / / 06.08.2003
Цитата:
Originally posted by 2NetFly
1. Сделал просто для того, чтоб был лучше понятен код.
2. binmode используется только для Win систем. Под юнихом все будет работать и без него.
3. Переменна $data объявляется локально. Ее не нужно обнулять.



Я без притензий, я только спасибо :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог