With this one-off script, no. The script is good at what it does. My comments were only things that jumped out as low-hanging fruit. In fact, beyond those couple of changes, I would probably not make any other changes to this.
My goal for processing org-mode files with Perl (not this script) would be as I listed above - manipulating the files, nodes, and properties / drawers. educated_foo stated below, "only org-mode can parse Org". I agree with that mostly. I would love to see the org community stabilize the format, and let org-mode (or Vaporware::Org-mode.pm) respond to the data within that format. The content of the properties and nodes, based on how the configuration is set, determine how the library reacts.
This script solves a very focused problem, and I am not suggesting that that scope be broadened, just that some of the edge cases in parsing some of the org-mode files that may be seen get fixed.