Let's find a program where the prototype is non-deterministic and affects context.
BEGIN { *call_to_inspect = ( rand() < 0.5 ? sub ($) {} : sub (@) {} ); }
You can detect some changes in the compile-time state of a prototype by its effect on context.
BEGIN { *call_to_query = ( rand() < 0.5 ? sub ($) {} : sub (@) {} ); } sub inspector { print wantarray ? 1 : 0, "\n" } call_to_inspect(inspector());
Let's observe:
>perl a.pl 1 >perl a.pl 1 >perl a.pl 0 >perl a.pl 1
Therefore, there exists a function call in a program for which two instance of the Perl parser have different prototypes for the named function.
Therefore, there exists a program for which two instance of the Perl parser produce different output.
Or for short, Perl cannot be parsed.
In reply to Re^3: Perl is not Dynamically Parseable
by ikegami
in thread Perl is not Dynamically Parseable
by Jeffrey Kegler
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |