вопрос про перл
Что-то типа двухмерного массива?
Как вариант, сделай массив, элементами которого будут ссылки на массивы.
a b c
d e f
g h i
$col1[0]=a
$col1[1]=b
$col1[2]=c
$col2[0]=d
$col2[1]=e
$col2[2]=f
мне нужно распознать элементы в каждой строчке и поместить их в массив, при этом нужно, чтобы можно было обращаться к конкретному массиву по номеру строки.
Ппц, и после этого кто- то говорит, что круче перла только яйца, а пхп сосёт
можно использовать хеш-массив (номер строки, массив данных строки) ?
Ппц, и после этого кто- то говорит, что круче перла только яйца, а пхп сосётфтопку тебя. чел просто не знает, как это сделать.
А сделать это можно так:
open my $fh, "file.name" || die "Can't open file";
my @dvum_array;
while (<$fh>) {
my @tmp_array = split (" ", $_);
push (@dvum_array, \@tmp_array);
}
(это если у тебя величины в строке разделены пробелом. Если нет - заменяй нужным параметром в сплите, в более тяжелых случаях юзай регулярные выражения)
Обращение к строке $m и элементу в ней $n:
$dvum_array[$m-1]->[$n-1];
Вот, в принципе, и все. Вроде, должно работать.
как и while
my @dvum_array = map {[split]} <$fh>;
EDIT: in ur face, пхпшники!
$line_0_0="[0;0]";
$line_0_1="[0;1]";
$line_1_0="[1;0]";
$line_1_1="[1;1]";
$line_2_0="[2;0]";
$line_2_1="[2;1]";
for($a=0; $a<3; $a++)
{
for($b=0; $b<2;$b++)
{
$tt="line"."_$a"."_$b";
print "$$tt";
}
}
print"\n";
Хотел сначала использовать конструкции вроде
$tt="line1[0]";
print "$$tt";
Но только ведь не работает, как-то некорректно разбирается из-за [0]. А ещё достаёт, что не могу использовать конструкции вроде
for($a=0; $a<3; $a++)
for($b=0; $b<2;$b++)
print "[$a;$b]";
Типа нужно доставить комплект (или два) фигурных скобок. В php реализовано всё как в C/C++, без лишних сложностей. И ведь могу спорить, что если я подобную критику закину на какой-нибудь перловский форум, то на меня накинутся со словами, что я лох и ламер, и на самом деле так, как в перле, правильнее. Нет, у php много проблемных мест есть, но perl...
двумерный массив как массив массивов — эмуляция? нет уж, это, пожалуй, все же реализация
я лох и ламерне, чувак, ты - извращенец! =)
И, кстати, приведенный тобой код лично у меня не работает так как надо (5.6.2).
Точнее - ваще ничего не пишет.
Не нравиццо "$$var";
тебе ж сказали, массив ссылок, и будет по аналогии с C
$$ttесли не изменяет память, с use strict это не будет работать, следовательно фтопку
$a[$i][$j]
— работает
$a->{$i}->{$j}
если я ничего не забыл, работает
блин,да в перле почти все работает =)
а ещоага, только это не синоним
$a->{$i}->{$j}
если я ничего не забыл, работает
$a[$i][$j]
сразу по двум пунктам
ну сколько можно, а?это было мне?
тогда не понял, как твой ответ связан с мои комментарием.
связь такая, что обсуждать черезжопные способы смысла мало, если при этом не показать нормальный, который вполне себе существует
Оставить комментарий
zakysj50
$m=5;$line$m[0]=10;
print "$line5[0]"; #ответ 10
или
$line1[0]=1;$line2[0]=2;$line3[0]=3;$line4[0]=4;
for ($m = 2; $m <5; ++$m) {print "$line$m[0],");} #ответ 2,3,4,
по понятным причинам такие строчки работать не будут.
Как сделать это правильно?