The main question is:
Why is this package named perforate?
GNU cp used to detect files that contain 0-filled holes and save disk space by skipping them with lseek when writing a file and thus not allocating disk blocks.
zum(1M) is the program included in the perforate package to make holes in existing files.
It is also possible to use cp(1M) --sparse=always this is the standard way to make holes -or in other words- to perforate files.