Forum Webscript.Ru

Программирование => Perl => Тема начата: ADm от 03 Октября 2003, 08:48:49

Название: Чайник::глупый вопрос
Отправлено: ADm от 03 Октября 2003, 08:48:49
Подскажите пожалуйста почему не работает такой скрипт:
вызывается из ком. строки (win) так
 type args.txt | perl my_script.pl

файл args.txt содержит имена файлов (одно имя на строку) для переименоввания. в файле 5 строк

скрипт ---------------------------------------------------------------------------
@all_files=;

for ($i=0; $i<=@all_files; $i++) {
        $current_file_name=$all_files[$i];
        $new_file_name=
               get_new_file_name($current_file_name);

#В этой строке ошибка:
        rename($current_file_name,$new_file_name) || die "$!";
}
конец------------------------------------------------------------------------------

Ошибка следующего содержания:
 Permission denied at c:\\temp\\perl\\rna.pl line 31, line 5.
переименовываемые файлы никем не заняты и имееся полный набор разрешений на работу с ними.
 Если убрать цикл и обрабатывать один файл все работает..
 
 Очень прошу сильно не пинать, вопрос быть может простой но я уж и не знаю что делать...
 Заранее спасибо!
Название: Чайник::глупый вопрос
Отправлено: ondr от 03 Октября 2003, 10:24:59
Цитировать
for ($i=0; $i<=@all_files; $i++) {

for ($i=0; $i<=$#all_files; $i++) {
Название: Чайник::глупый вопрос
Отправлено: ADm от 03 Октября 2003, 10:41:23
Цитировать
ondr:
for ($i=0; $i<=$#all_files; $i++) {


так конечно правильней Ж), но это тоже не работает.
Название: Чайник::глупый вопрос
Отправлено: ondr от 03 Октября 2003, 10:59:35
вместо rename впиши print "$current_file_name,$new_file_name\\n";
и пришли результат
и еще листинг файла args.txt
а также листинг директории
Название: Чайник::глупый вопрос
Отправлено: ADm от 03 Октября 2003, 11:48:52
вот результат:
c:\\temp\\perl\\test\\test1a.txt
, c:\\temp\\perl\\test\\test1a0102003.txt

c:\\temp\\perl\\test\\test2a.txt
, c:\\temp\\perl\\test\\test2a0102003.txt

c:\\temp\\perl\\test\\test3a.txt
, c:\\temp\\perl\\test\\test3a0102003.txt

c:\\temp\\perl\\test\\test4a.txt
, c:\\temp\\perl\\test\\test4a0102003.txt

c:\\temp\\perl\\test\\test5a.txt, c:\\temp\\perl\\test\\test5a0102003.txt

Вот args.txt:
c:\\temp\\perl\\test\\test1a.txt
c:\\temp\\perl\\test\\test2a.txt
c:\\temp\\perl\\test\\test3a.txt
c:\\temp\\perl\\test\\test4a.txt
c:\\temp\\perl\\test\\test5a.txt

Листинг директории:
 Tom v ustrojstve C ne imeet metki.
 Serijnyj nomer toma: 0816-73C4

 Soderzhimoe papki C:\\Temp\\perl\\test

03.10.2003  08:17              .
03.10.2003  08:17              ..
03.10.2003  12:34               148 args.txt
17.09.2003  14:25                 1 test1a.txt
17.09.2003  14:25                 1 test2a.txt
17.09.2003  14:25                 1 test3a.txt
17.09.2003  14:25                 1 test4a.txt
17.09.2003  14:25                 1 test5a.txt
               6 fajlov            153 bajt
               2 papok   2 365 960 192 bajt svobodno
Название: Чайник::глупый вопрос
Отправлено: ondr от 03 Октября 2003, 12:30:50
После $current_file_name=$all_files[$i]; воткни chomp $current_file_name
Название: Чайник::глупый вопрос
Отправлено: ADm от 03 Октября 2003, 13:30:20
теперь работает. БОЛШОЕ СПАСИБО!