Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^7: Filehandle/array naming (updated)

by bliako (Monsignor)
on Nov 20, 2020 at 19:06 UTC ( [id://11123920]=note: print w/replies, xml ) Need Help??


in reply to Re^6: Filehandle/array naming (updated)
in thread Filehandle/array naming

My confusion is: where does using { } brackets for disambiguation (as in print 'aa${foo}bb') stop and symbolic references start as in ${foo.$n} or ${foo.''} . Did I get { } brackets for disambiguation wrong (e.g. as in the unix shell use-case: ${XYZ} )?

Replies are listed 'Best First'.
Re^8: Filehandle/array naming (updated)
by choroba (Cardinal) on Nov 20, 2020 at 21:08 UTC
    If the thing inside the brackets is a single identifier, it's the disambiguation. If it's more, i.e. there is an operation involved (like concatenation in this case), it's the symbolic reference.
    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
Re^8: Filehandle/array naming (updated)
by AnomalousMonk (Archbishop) on Nov 20, 2020 at 21:45 UTC

    As I understand it, symbolic referencing starts when you start generating symbols at run time. After all, in the statement
        my $foo = 'bar';
    foo is a symbol, an identifier or name. There might be other variables with the same name, distinguished by their sigils, but all this is known at compile time.

    The other distinguishing feature of old-school symbolic referencing in Perl is that it only applies to package-globals.

    Of course, the barrier between compile time and run time is very permeable in Perl, and one can slip back and forth between these states in all kinds of tricksy (and useful) ways. Using eval, one can manufacture endless symbols and syntax for functions, variables and so on and build entire programs at run time. All of this run-time compilation goes on within appropriate scoping constraints, whereas "symbolic referencing" (as the term is used in Perl) for package-globals is always... well, global.


    Give a man a fish:  <%-{-{-{-<

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11123920]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2024-04-19 16:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found