Forum Webscript.Ru

Программирование => Perl => Тема начата: Yourock от 25 Октября 2008, 10:20:24

Название: Динамическое создание массивов
Отправлено: Yourock от 25 Октября 2008, 10:20:24
Люди добрые, подскажите, чем сможете.
Стоит задача динамического создания массива типа


#!/usr/bin/perl -w
use strict;

for (1..10)
{
   my @array$_; # my @array1; my @arrayn; my @array10;
}
... чтобы получилось, как в комменте, то есть чтобы дальше можно было работать, например, с @array3 или @array5.
А как это всё сделать - не знаю :(
Название: Динамическое создание массивов
Отправлено: arto от 25 Октября 2008, 12:25:13
опишите задачу.
Название: Динамическое создание массивов
Отправлено: demond от 27 Октября 2008, 12:29:48
так пойдет? :-)

for (1..10)
{
   $array[$_]="num".$_;
}
$i=0;
foreach (@array) { @{$_} = ($i.1,$i.2,$i.3,$i.4,$i.5,$i.6); $i++}


foreach (@num1){print $_." ";}
print "\\n";
foreach (@num2){print $_." ";}
print "\\n";
foreach (@num3){print $_." ";}
Название: Динамическое создание массивов
Отправлено: Yourock от 27 Октября 2008, 15:40:07
Подход отличный! Спасибо.
Но включенный use strict; не пропускает - выползают ошибки типа Global symbol "$i" requires explicit package name at E:\\www\\cgi-bin\\test.pl line 9.
Название: Динамическое создание массивов
Отправлено: demond от 28 Октября 2008, 11:16:11
Может я чего-то не понимаю, но strict требует объявлять все переменные перед их использованием, т.е. до исполнения кода компилятор создает все переменные (выделяет под них память). Вам же необходимо создавать переменные в процессе исполнения кода, что противоречит требованиям прагмы strict. Если найдете решение, обязательно напишите.
Могу еще посоветовать форум forum.vingrad.ru. Там в разделе perl много хороших программистов, я думаю они Вам помогут, если это возможно, или объяснят, почему это не возможно! :-)
Название: Динамическое создание массивов
Отправлено: vladsu от 10 Декабря 2008, 01:27:18
А как насчёт внимательного прочтения сообщения об ошибке?
Замените $i=0; на my $i=0;  в 9 строке!