Forum Webscript.Ru

Программирование => Perl => Тема начата: Kwazar от 03 Июня 2004, 12:33:34

Название: Создание массива массивов
Отправлено: Kwazar от 03 Июня 2004, 12:33:34
Задаю его так, все замечательно:
@data = ([\'2004-05-28\', \'2004-05-29\', \'2004-05-30\', \'2004-05-31\', \'2004-06-01\', \'2004-06-02\', \'2004-06-03\'],[18, 10, 2, 10, 10, 8, 5],[36, 20, 7, 19, 20, 14, 7],[15, 7, 2, 4, 6, 8, 3]);

Задаю его так, нифига:
@data = ([@data1],[@data2],[@data3],[@data4]);
Хотя @data1,@data2,@data3,@data4 содержат все те же самые данные.
Как корректно задать массив массивов, вставляя в него не статические данные?

заранее благодарю.
Название: Создание массива массивов
Отправлено: NeoNox от 03 Июня 2004, 12:52:29
use Data::Dumper;
print Dumper(@data);
Название: Создание массива массивов
Отправлено: Kwazar от 03 Июня 2004, 13:12:31
Вот что я вижу.
$VAR1 = [ \'\\\'2004-05-28\\\', \\\'2004-05-29\\\', \\\'2004-05-30\\\', \\\'2004-05-31\\\', \\\'2004-06-01\\\', \\\'2004-06-02\\\', \\\'2004-06-03\\\'\' ]; $VAR2 = [ \'18, 10, 2, 10, 10, 8, 5\' ]; $VAR3 = [ \'36, 20, 7, 19, 20, 15, 7\' ]; $VAR4 = [ \'15, 7, 2, 4, 6, 7, 4\' ];
--------------------------------------------------------------------------------
$VAR1 = [ \'2004-05-28\', \'2004-05-29\', \'2004-05-30\', \'2004-05-31\', \'2004-06-01\', \'2004-06-02\', \'2004-06-03\' ]; $VAR2 = [ 18, 10, 2, 10, 10, 8, 5 ]; $VAR3 = [ 36, 20, 7, 19, 20, 14, 7 ]; $VAR4 = [ 15, 7, 2, 4, 6, 8, 3 ];

2-й вариант рабочий, но там данные ставятся статически. Как удалить динамически подставляемые спец. символы?

заранее благодарю
Название: Создание массива массивов
Отправлено: NeoNox от 03 Июня 2004, 13:18:44
что ты имееш ввиду под
Цитировать
Kwazar:
динамически подставляемые спец. символы

?
Название: Создание массива массивов
Отправлено: synthez от 03 Июня 2004, 13:18:59
если так попробовать @data=([\\@data1],[\\@data2],[\\@data3],[\\@data4])
Название: Создание массива массивов
Отправлено: synthez от 03 Июня 2004, 13:20:19
а всё уже не успел
Название: Создание массива массивов
Отправлено: Kwazar от 03 Июня 2004, 13:24:55
synthez
Вот что получается на выходе:
$VAR1 = [ [ \'\\\'2004-05-28\\\', \\\'2004-05-29\\\', \\\'2004-05-30\\\', \\\'2004-05-31\\\', \\\'2004-06-01\\\', \\\'2004-06-02\\\', \\\'2004-06-03\\\'\' ] ]; $VAR2 = [ [ \'18, 10, 2, 10, 10, 8, 5\' ] ]; $VAR3 = [ [ \'36, 20, 7, 19, 20, 15, 8\' ] ]; $VAR4 = [ [ \'15, 7, 2, 4, 6, 7, 3\' ] ];


NeoNox, я имел ввиду как убрать лишние одинарные ковычки и обратные косые черты?
Название: Создание массива массивов
Отправлено: Kwazar от 03 Июня 2004, 13:25:48
synthez
[q]а всё уже не успел[/q]
?
Название: Создание массива массивов
Отправлено: synthez от 03 Июня 2004, 13:30:46
Kwazar
не обращай внимания...
Название: Создание массива массивов
Отправлено: Kwazar от 03 Июня 2004, 13:48:11
@data = (\\@data1,\\@data2,\\@data3,\\@data4);
Так запись тоже не понимается...
Название: Создание массива массивов
Отправлено: synthez от 03 Июня 2004, 13:51:33
Kwazar
что именно нужно, как должно выглядить в идеале?
Название: Создание массива массивов
Отправлено: NeoNox от 03 Июня 2004, 14:26:12
Kwazar ты запутался в двух соснах.
@m1 = ([0,1,2,3],[4,5,6])
@m2 = ([7,8,9])
@m = ([@m1],[@m2])
print $m[1][0][1]
print $m[0][0][1]

что будет на выходе?
Почему так происходит тебе понятно?
Название: Создание массива массивов
Отправлено: Kwazar от 03 Июня 2004, 15:23:32
Для простоты:
@data1 = "\'2004-05-28\', \'2004-05-29\', \'2004-05-30\', \'2004-05-31\', \'2004-06-01\', \'2004-06-02\', \'2004-06-03\'";
@data2="18, 10, 2, 10, 10, 8, 5";
@data3="36, 20, 7, 19, 20, 14, 7";
@data4="15, 7, 2, 4, 6, 8, 3";

Задача. Из этих массивов надо сделать массив массивов @data :)

Заранее благодарен.
Название: Создание массива массивов
Отправлено: NeoNox от 03 Июня 2004, 15:24:31
Цитировать
Kwazar:
Куда капать?

внимательно прочитать что я написал. осознать. понять что данные уже в массиве. как к ним получить доступ я уже написал.
Название: Создание массива массивов
Отправлено: Kwazar от 03 Июня 2004, 15:29:03
NeoNox
Цитировать
NeoNox:
внимательно прочитать что я написал. осознать. понять что данные уже в массиве. как к ним получить доступ я уже написал.

Отдельные элементы мне не нужны.
Этот массив массивов @data нужен для построения графика по принципу:

my $mygraph = GD::Graph::bars->new(500, 300);
$mygraph->set(
    x_label     => \'ox\',
    y_label     => \'oy\',
    title       => \'title\',

    bar_width   => 3,
    # Sepearte the bars with 4 pixels (не ручаюсь за точность, оставил без перевода. А.Ч.)
    bar_spacing => 4,
    # Показывать сетку
    long_ticks  => 1,
    # Показывать значения над столбиками

    show_values => 1,
) or warn $mygraph->error;

$mygraph->set_legend_font(GD::gdMediumBoldFont);
$mygraph->set_legend(\'Exam 1\', \'Exam 2\', \'Exam 3\');

my $myimage = $mygraph->plot(\\@data) or die $mygraph->error;


print "Content-type: image/png\\n\\n";
print $myimage->png;

Использую: GD::Graph::lines;
Название: Создание массива массивов
Отправлено: NeoNox от 03 Июня 2004, 15:35:03
Kwazar
сколько элементов у тебя в массиве?
@data1 = "\'2004-05-28\', \'2004-05-29\', \'2004-05-30\', \'2004-05-31\', \'2004-06-01\', \'2004-06-02\', \'2004-06-03\'";
Название: Создание массива массивов
Отправлено: Kwazar от 03 Июня 2004, 16:00:54
Да.....
Всем спасибо, пошел в клонуны :)