Forum Webscript.Ru
Программирование => Perl => Тема начата: 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.
А как это всё сделать - не знаю :(
-
опишите задачу.
-
так пойдет? :-)
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 $_." ";}
-
Подход отличный! Спасибо.
Но включенный use strict; не пропускает - выползают ошибки типа Global symbol "$i" requires explicit package name at E:\\www\\cgi-bin\\test.pl line 9.
-
Может я чего-то не понимаю, но strict требует объявлять все переменные перед их использованием, т.е. до исполнения кода компилятор создает все переменные (выделяет под них память). Вам же необходимо создавать переменные в процессе исполнения кода, что противоречит требованиям прагмы strict. Если найдете решение, обязательно напишите.
Могу еще посоветовать форум forum.vingrad.ru. Там в разделе perl много хороших программистов, я думаю они Вам помогут, если это возможно, или объяснят, почему это не возможно! :-)
-
А как насчёт внимательного прочтения сообщения об ошибке?
Замените $i=0; на my $i=0; в 9 строке!