LINUX.ORG.RU

Perl объясните почему оно так работает...

 ,


0

1

К примеру код: https://pastebin.com/qZ9kaa5F (В директории tmp_dir два файла 2.txt ,1.txt.) На выходе имеем:

$VAR1 = [
          '2.txt',
          '1.txt'
        ];
# Результат обработки Vyhlop
$VAR1 = [ 
          '2', 
          '1'
        ];
Почему при вызове процедуры Vyhlop в качестве параметра используется массив со значениями (2,1), а не (2.txt 1.txt)? Как то можно вызвать процедуру Vyhlop (нужно именно после вызова Remove_ext), чтобы в массиве использовались значения (2.txt ,1.txt)?


Голубчик, я сильно подозреваю, что Remove_ext делает именно то, о чем сообщает ее имя: remove extension, удалить расширение. Если вам нужны полные названия файлов, то попробуйте закомментировать эту самую Remove_ext. Код видимо не ваш.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

С чего такие выводы, вопрос прочитал бы что ли. Оно делает, но почему оно его глобально делает. Как мне вызвать Vyshlop (после Remove_ext) c первоночальными параметрами в массиве?

ving2
() автор топика
Последнее исправление: ving2 (всего исправлений: 1)
Ответ на: комментарий от Virtuos86

В том то и вопрос мне в одной ситуации, нужны полные названия, в другой не полные. В одной нужно удалить, в другой нет. А вызывать нужно именно в таком порядке как в примере привел. Или нужно заного, формировать массив с полными названиями (если его обрабатывали).

ving2
() автор топика
Ответ на: комментарий от ving2

Код не твой, и да, там черным по белому все написано. Зачем задавать дебильные вопросы?

на 37 строке добавь my @files2 = @files;

дальше даже ты сообразишь.

Anoxemian ★★★★★
()
Ответ на: комментарий от ving2

а, так ты против модификации начального массива? так передавай его копию и делай return результата. ты же его по ссылке ломаешь при каждом вызове.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Код не твой, и да, там черным по белому все написано. на 37 строке добавь my @files2 = @files;

Спасибо, вот этого и не мог понять....

ving2
() автор топика
Последнее исправление: ving2 (всего исправлений: 1)
Ответ на: комментарий от Anoxemian

так передавай его копию и делай return результата. ты же его по ссылке ломаешь при каждом вызове.

Вот про это и не вкурсе.... Теперь понятно. Спасибо.

ving2
() автор топика
Последнее исправление: ving2 (всего исправлений: 1)
Ответ на: комментарий от Anoxemian

там черным по белому все написано. Зачем задавать дебильные вопросы?

Если бы знал про то, что массив ломается, если его по ссылке передавать, тогда вопросов бы не задавал. Только начал изучать перл. Отсюда такие вопросы и появляются «дебильные».

ving2
() автор топика
Ответ на: комментарий от Virtuos86

я не мог догнать, что нужно копию массива сделать. Все остальное там понятно и просто. Сам же написал, его в качестве примера. Конечно в сложном коде мне не разобраться, спорить не буду. Или даже в чужом коде сложно будет...

ving2
() автор топика
Последнее исправление: ving2 (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.