das liegt daran, dass an der stelle in einer loop eine arrayref erwartet wird. changes liefert aber anscheinend eine liste, und da es im skalaren text aufgerufen wird, liefert es nur das letzte element.
ich müsste also beim loop immer im listcontext aufrufen, nachschauen, ist das erste element eine arrayref, nimm das, wenn nicht, mach aus der liste eine ref. das müsste ich aber an verschiedenen stellen machen. eventuell macht das wieder andere aufrufe kaputt.
oder ich müsste dem name-attribut ein flag hinzufügen, das dann den aufruf im listcontext macht...
ich würde aber sowieso nicht empfehlen, DBIC resultsets direkt ans template zu liefern. zum einen können methodenaufrufe wieder datenbankaufrufe triggern, die dann schwr zu debuggen sind, ausserdem könnte man dann im template sogar ein delete darauf aufrufen. zudem sind DBIC objekte sehr gross und bleiben dann zusammen mit dem template-output solange im spcher.
ich schreibe mir für alle meine DBIC-klassen views. das ist zwar extra arbeit, aber meiner meinung nach berechenbarer, da ich dort nur die datenstruktur zurückgebe und nicht in manchen fällen listen statt arrayrefs