The most piquant assessment of Hannibal was that he knew how to win battles, but not how to win a war.
Good observation. VDH has an excellent analysis of the battle of Cannae and its aftermath.
Mercenary/non-western armies were often not disciplined enough to go for the kill when spoils were to be had.
He could defeat Roman armies. He could not defeat Rome.