Here is a brief pseudo-grammar for XDumper's output. Note that whitespace is irrelevant and only used for clarity.
item -> var | special | label
var -> ( label ':' )? classname? '<ro>'? (scalar |
array | hash | glob | code | io | lvalue )
scalar -> number | string | ref | 'undef'
ref -> '<weak>'? ( '\' item | '[' list? ']' | '{' hlist? '}' )
array -> '@(' list? ')'
hash -> '%(' hlist? ')'
list -> item (',' item)*
hlist -> key '=>' item (',' key '=>' item)*
glob -> '<anon>'? '*' package? name
code -> '<format>'? '&(' filename ':' linenum ')'
io -> '<io>'
lvalue -> substr | pos | vec
substr -> 'substr(' item ',' number ',' number ')'
pos -> 'pos(' item ')'
vec -> 'vec(' item ',' number ',' number ')'
special -> '<undef>' | '<yes>' | '<no>'
In particular note that [...] is an abbreviation for \@(...) and {...} is an abbreviation for \%(...).
The abbeviated forms are used whenever possible, but sometimes it has to use the expanded form, for example when the array or hash has a prefix (blessing, read-only) or when it has a label.
For example $L001: <ro> \Foo @(1, 2) means that label $L001 names a read-only reference to a Foo-blessed array containing the numbers 1 and 2.
For people who know the perl guts: 'var', 'ref', 'array', 'hash' etc in the above grammar correspond one-to-one with SV, RV, AV, HV etc.
•Update: added format and io
•Update: added lvalues (completely forgot them earlier)
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.