и правильно вызывает ошибку...
Misha v.3 17.09.2003 15:52
в случае, когда парсер конструирует хеш из таблицы или при запросе и вдруг оказывается, что получаются одинаковые ключи - он ругается.
чтобы отключить эту ругань - есть опции (в документации)
далее, ваш код использует неверные скобки. квадратные скобки (которые вы используете) означают, что сначала выполнится код заключенный в них, а потом результат этого передается в функцию. т.е. для вашего случая нужны не квадратные скобки, а круглые или фигурные.
едем дальше... запись ^var.inc[1] означает: берем содержимое переменной $var и прибавляем к ней 1. результат остается в $var. т.е. для вашего случая такая запись тоже не подходит, вам нужно, чтобы функция, которую вы записали в фигурных скобках для каждой строки таблицы выдала
строку/число которое и будет ключем хеша.
резюмируя все сказанное можно написать код, который будет делать то, что вы планировали (если я верно прочел мысли):
$var(0)
$my_hash[^my_table.hash{$var^var.inc(1)}[$.distinct(1)]]
в данном случае distinct не нужен, т.к. все ключи у нас будут уникальными...
P.S. если вы хотите сделать хеш, где его ключи - номера строк таблицы, то лучше оспользуйтесь не извращениями с $var, а методом, который
предложил Luzhnikovskiy