add chain-of-responsibility perl version