add perl version prototype pattern