P.S.: The perldoc
more-or-less says the same thing as I just did, as follows:
B::Deparse is a backend module for the Perl compiler that generates perl source code, based on the internal compiled structure that perl itself creates after parsing a program. The output of B::Deparse won't be exactly the same as the original source, since perl doesn't keep track of comments or whitespace, and there isn't a one-to-one correspondence between perl's syntactical constructions and their compiled form, but it will often be close. When you use the -p option, the output also includes parentheses even when they are not required by precedence, which can make it easy to see if perl is parsing your expressions the way you intended.
While B::Deparse goes to some lengths to try to figure out what your original program was doing, some parts of the language can still trip it up; it still fails even on some parts of Perl's own test suite. [...]
In compiler parlance, the “internal compiled structure” is not simply an AST, but the final output of the Perl compilation process, meant to drive the interpreter. The “de-parser” has no way to know at this point what your source-code actually was. It can only look at internal data structures and generate source-code fragments which could legitimately represent them.