#perl #функции #sub
Как в функцию передать массив и что то с ним сделать в perl?
Ответы
Ответ 1
Можно передавать указатель на массив: #!perl.exe -w use strict; use utf8; our @array = qw(Мама мыла Вишну); sub printArray{ my ($ref) = @_; for my $element (@$ref) { print "$element\n"; } } printArray(\@array); См. perldoc perlrefОтвет 2
Пока гуглил или пытался воспроизвести проблему с бесконечным циклом(и конкретной загрузкой ЦП), или отказом вообще работать. нашел решение проблемы. Ниже пример как в пользовательскую функцию передать массив. И в данном случае его вывести. #!perl.exe -w #строка выше у вас может быть другой. use strict; my @array = ("Мама", "мыла", "Вишну"); sub readArray{ my($val) = @_; for(my $i=0; $i < @$val ;$i++){ print @$val[$i]."\n"; } } readArray( \@array); Суть в этом "$@" это называется применить к ссылке операцию разименовывания. А при вызове нужно передать ссылку на массив. информацию нашел тут: http://valera.asf.ru/perl/book/9/9.4.htmlОтвет 3
@a = [1,2,3,4,5,6,7] sub a { $in = shift; foreach ( @{$in} ) { print $_; } }
Комментариев нет:
Отправить комментарий