powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Как массив в подпрограмму передать?
21 сообщений из 21, страница 1 из 1
(Perl) Как массив в подпрограмму передать?
    #33285457
ВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
     sub test {
                my @arr =  ?
                my $w = ?
                
                print "@arr\n$w\n";
      }
  
      my @array = ( 1 , 2 , 3 , 4 , 5 );
      test(@array, "www");


Как сделать, чтобы @arr не содержало "www",
и соответственно, чтобы в $w было "www"?

Или не париться, передавать массив последним параметром, и делать так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
     sub test {
                my $w = shift;
                my @arr =  @_;
                
                print "@arr\n$w\n";
      }
  
      my @array = ( 1 , 2 , 3 , 4 , 5 );
      test("www", @array);


Или я что-то совсем не так делаю?
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33285521
Dmitri P.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Передавай не массив, а ссылку на него...
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33285567
ВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitri P.Передавай не массив, а ссылку на него...
А так, как я написал, неправильно? Это принципиально в перле?
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33285621
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вв Dmitri P.Передавай не массив, а ссылку на него...
А так, как я написал, неправильно? Это принципиально в перле?
можешь и так передавать, но тогда не задавай вопросы :)
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33285679
ВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай aka Motodor вв Dmitri P.Передавай не массив, а ссылку на него...
А так, как я написал, неправильно? Это принципиально в перле?
можешь и так передавать, но тогда не задавай вопросы :)

Если я не буду вопросы задавать, зачем-же тогда ты тут такой нужен?
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33285693
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не было упреком... тебе дали ответ на твой вопрос, используй ссылку на массив.
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33285724
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вв Dmitri P.Передавай не массив, а ссылку на него...
А так, как я написал, неправильно? Это принципиально в перле?Имхо некрасиво, нестильно, непривычно.
my $w = pop; # pop @_;
my @arr = @_;
Два массива уже не передадите, наперед не зная размерности хотя бы одного из них.

Лучше ссылкой.
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33285737
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ссылка создается так
Код: plaintext
1.
\@array
вызывается
Код: plaintext
1.
$$array
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286164
ВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ух, сколько навалили. Спасибо.
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286282
ВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, раз уж про некрасивость и непривычность речь зашла, что ещё как ссылки принято передавать?
$sth = $dbh->prepare($sql);
$sth, $dbh - тоже в случае чего делать \$sth, \$dbh, или как?
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286305
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ввКстати, раз уж про некрасивость и непривычность речь зашла, что ещё как ссылки принято передавать?
$sth = $dbh->prepare($sql);
$sth, $dbh - тоже в случае чего делать \$sth, \$dbh, или как?
В случае чего?
Код: plaintext
1.
$sth = $dbh->prepare($sql);
тут все правильно, только не забывайте объявлять переменные.
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286363
ВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай aka Motodor
В случае чего?

В случае передачи $dbh, $sth в подпрограмму.

Код: plaintext
(Perl) Как массив в подпрограмму передать?
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286391
g613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 вв:

perldoc perlref
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286394
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вв Николай aka Motodor
В случае чего?

В случае передачи $dbh, $sth в подпрограмму.

Код: plaintext
(Perl) Как массив в подпрограмму передать?

а dbh это не массив, а дескриптор. И зачем его передавать в подпрограмму ?!
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286467
ВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай aka Motodor вв Николай aka Motodor
В случае чего?

В случае передачи $dbh, $sth в подпрограмму.

Код: plaintext
(Perl) Как массив в подпрограмму передать?

а dbh это не массив, а дескриптор. И зачем его передавать в подпрограмму ?!

Ты издеваешься что-ли? Это очень смешно по-твоему?

зы. тему можешь закрыть, всё понятно. судя по всему ты какой-то неадекватный модератор
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286493
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уважаемый, я не вижу со своей стороны намека на издевательство и насмешки над Вами, прошу обосновать.
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286561
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вв Николай aka Motodor
В случае чего?

В случае передачи $dbh, $sth в подпрограмму.

Код: plaintext
(Perl) Как массив в подпрограмму передать?
Нет, их передавать без ссылок: &my_func( $dbh, $sth ). Это объекты, которые, если заглянуть внутрь, уже являются ссылками, bless-нутыми.

2 Николай aka Motodor: Я тоже не понял, почему $dbh - дескриптор. Вроде бы нигде опечатки не было, знак доллара перед именем переменной никто не потерял.
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286607
ВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуйста. Хотя вроде всё написано уже.
1. Название темы - "Как массив в подпрограмму передать?". Очевидно, что речь идёт о массивах о подпрограммах.
2. LeXa NalBat написал про стиль и общепринятые нормы написания программ на перл, поэтому я спросил, как вообще принято передавать переменные в подпрограммы (речь идёт именно о них).
3. Очевидно, что в приведённом мной примере : "$sth = $dbh->prepare($sql);" никаких массивов нет, значит интересует "Способ передачи "$sth и $dbh в подпрограммы". Соответственно вопрос - "Нужно-ли $sth оформлять как ссылку в случае передачи её в подпрограмму?"
Перл для меня дело новое, поэтому очень не хочется, чтобы человек, который после меня будет разбираться с моей прогой сказал что-то вроде "Что за идиот это написал?"
4. "...И зачем его передавать в подпрограмму ?!"
Мне кажется, ты в курсе, для чего пишутся подпрограммы, поэтому мне этот вопрос показался достаточно нелепым и даже оскорбительным.

С уважением отнушусь к тебе и к твоим обычным ответам на различные вопросы, но в данном случае, могу только порекомендовать перед тем как ответить, внимательнее читать названия тем и ответы предыдущих авторов.

Я надеюсь, что всё объяснил, и теперь мой второй вопрос достаточно понятен. Во избежание дальнейших недоразумений и взаимного недопонимания, прошу ткнуть пальцем, и указать, что-же в этом вопросе показалось настолько необычным, что вызвало столь бурную реакцию с восклицательными знаками.
Код: plaintext
1.
2.
Кстати, раз уж про некрасивость и непривычность речь зашла, что ещё как ссылки принято передавать?
$sth = $dbh->prepare($sql);
$sth, $dbh - тоже в случае чего делать \$sth, \$dbh, или как?
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286638
Фотография Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2LeXa NalBat, знак $ это я пропустил.
2вв, не обижайтесь, ?! в моем понимание было не бурной реакцией, а не пониманием всего навсего, к сожалению частенько использую сочетание ?!, и Вы не первый кто обижается, больше не буду :)
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286656
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ввКстати, раз уж про некрасивость и непривычность речь зашла, что ещё как ссылки принято передавать?Например хэши. Иначе (если их передавать не как ссылки) в функцию (подпрограмму) придет список. (List, Array, Hash - разные вещи. См. perldoc perldata.)

вв$sth = $dbh->prepare($sql);
$sth, $dbh - тоже в случае чего делать \$sth, \$dbh, или как?Я чуть раньше ответил. Не делать.
...
Рейтинг: 0 / 0
(Perl) Как массив в подпрограмму передать?
    #33286707
ВВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, всем спасибо. Было-бы из-за чего огород городить почти на страницу
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (Perl) Как массив в подпрограмму передать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]