package MyModel; use strict; use warnings; use Gtk2; use Glib::Object::Subclass Glib::Object::, interfaces => [ Gtk2::TreeModel:: ]; use constant LEN => 2; sub INIT_INSTANCE { my ($self) = @_; } sub GET_FLAGS { return [ 'list-only' ]; } sub GET_N_COLUMNS { return 10; } sub GET_COLUMN_TYPE { return 'Glib::String'; } sub GET_ITER { my ($self, $path) = @_; if ($path->get_depth != 1) { return undef; } my ($index) = $path->get_indices; if ($index >= LEN) { return undef; } return [ 123, $index, undef, undef ]; } sub GET_PATH { my ($self, $iter) = @_; return Gtk2::TreePath->new_from_indices ($iter->[1]); } sub ITER_N_CHILDREN { print "ITER_N_CHILDREN\n"; return 2; } sub ITER_NTH_CHILD { my ($self, $iter, $n) = @_; if (defined $iter) { return undef; } if ($n >= 2) { return undef; } return [ 123, $n, undef, undef ]; } sub ITER_HAS_CHILD { my ($self, $iter) = @_; if (defined $iter) { return 0; # nothing under rows } else { return 1; } } sub ITER_PARENT { return undef; } my @row = (100,200,300,400,500,600,700,800,900,1000); sub GET_VALUE { my ($self, $iter, $col) = @_; return $row[$col]; } use strict; use warnings; use Gtk2 '-init'; use Data::Dumper; my $model = MyModel->new; # this one ok if (0) { my $iter = $model->get_iter_first; my @a = $model->get($iter, 0,2,4,6,8); print Dumper(\ a); } # but this one gets "Bizarre copy of CODE in aassign" error { my $iter = $model->get_iter_first; my @a = $model->get($iter); print Dumper(\ a); } exit 0;