Though it is not the infallible oracle I once thought it was, I still make frequent use of
% perl -MO=Deparse,-p -e '<Perl code>'
...to figure out how perl is parsing something, or maybe to get a grip on some obfu. E.g. if you wonder what this one-liner does
-nle '}{print$.' foobar.txt
feed it to
-MO=Deparse,-p (make sure to retain any other command line switches, like
-nl here):
% perl -MO=Deparse,-p -nle '}{print$.'
BEGIN { $/ = "\n"; $\ = "\n"; }
LINE: while (defined(($_ = <ARGV>))) {
chomp($_);
}
{
print($.);
}
-e syntax OK
Note that the
-p in this one-liner is part not perl's command line switch, but rather an argument to
B::Deparse.
Less commonly , I use other backends, such as B::Terse and B::Concise, instead of B::Deparse. See also O and B.
the lowliest monk